常用数据结构

  • string 最常用的,包含 incr自增 、decr自减、setnx 等

512M的容量

GetSet: 设置新值,返回旧值

应用场景 统计功能如粉丝数 分布式锁 共享Session 也可用于生成全局唯一的id

  • set set集合

能放2^32-1个元素

用来做不重复元素保存

  • list 是一个双向链表,支持双向的Pop/Push ,江湖规矩一般从左端Push,右端Pop——LPush/RPop,配合lpush lpop rpush rpop 等可以组成栈或者队列

消息队列 栈 文字

  • hash hashtable 储存结构化的数据

可以是用户信息 一个key对应一个用户 多个field对应多个用户属性,如果使用string结构存的话,在需要修改其中某一项时,通常需要将所有值取出反序列化后,修改某一项的值,再序列化存储回去。不仅增大开销,也不适用于一些可能并发操作的场合(比如两个并发的操作都需要修改积分)。而Redis的Hash结构可以使你像在数据库中Update一个属性一样只修改某一项属性值

  • zset 有序的set集合

排行榜

特殊数据类型

Geospatial 地理位置 经纬度坐标专用

用于存地点名称及坐标 ,可以计算两点距离, 可以找附近的人等功能

hyperloglog 基数

当要统计不重复数据的个数时特别推荐这个, 相比set,它的内存开销极小且固定的12kb. 存2^64的数据只占用12kb内存。

缺点是有容错率 0.81%。 不过正常这种统计的都不需要这么高的准确度,比如统计网页UV(不重复用户的访问量)

bitmap 位图

只有两个状态 0和1

非常适合打卡 签到等任务统计

比如一周打卡 给7个点(7个bit) 每个点写入0或者1. 然后统计就可以了

内存开销很小, bit位 8bit=1字节