1、redis全称 remote dictionary server.是一个key-value的存储系统,可以存储String,map,list,set,zset(有序集合)等类型。添加zset类型的元素时,都要关联一个double类型score,zset就是通过score来进行排序,元素不能重复,但是score可以重复
相关类型的使用场景和特性
类型 | 特性 | 场景 |
---|---|---|
String | 一个键值对最多存储512MB,可以存储任何数据,包括图片和序列化的数据。 | 很多 |
Map | 对应java语言中的map,Memcached中需要取出整个字符串反序列化成对象修改完再序列化存回去 | 修改用户的某个属性 |
list | 双向链表,一个链表最多包含2^32 - 1 个元素 | 消息队列,朋友圈中的时间线 |
Set | 基于哈希表实现,元素不可重复,最多包含2^32 - 1 个元素 | 利用唯一性,统计访问网站的所有独立ip;好用推荐时,根据tag求交集,大于某个阈值就可以推荐 |
Sorted Set | 数据插入集合时,已经进行天然排序 | 1,排行榜 2,带权重的消息队列 |
2、HyperLogLog
Redis HyperLogLog 是用来做基数(不重复元素的数量)统计的算法,HyperLogLog 的优点是,再输入的元素非常多时,统计基数也只需要最多消耗12KB的内存,不会像list等一样会返回元素,同时统计结果带有 0.81% 标准误差。使用场景:统计在线人数;网站ip访问数量。
3、redis发布订阅:Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。Redis 客户端可以订阅任意数量的频道。
4、Redis 事务:只是打包执行一连串操作,并不保证原子性,任何一个操作失败,不会回滚之前的操作,也不影响其他命令的执行