共计 1350 个字符,预计需要花费 4 分钟才能阅读完成。
String-字符串
字符串类型是redis中最为基础的数据结构。
- 存储最简单的key-value结构
- value可以为字符串、整型或浮点型
- 对于整型或浮点型可以执行自增或自减操作
# 设置一个字符串键值对
SET username "alice"
# 获取字符串值
GET username
使用场景
- 常用的缓存功能:利用redis做缓存,配合其他数据库,可以大大加快系统的读写速度
- 计数器:例如web应用,想要统计用户每日的点击量,只需要将用户ID加上时间戳做key,并在用户每次点击时,向redis发送INCR命令,执行一次自增即可。最终的数据结果可以在特点的时间点比如0点持久化到其他存储介质中。
- 共享用户session:用户每次刷新页面,可能都需要重新登录或者读取cookie中的登录信息,也可以利用redis统一管理用户的session信息,只需要保证redis的高可用即可。
Hash-字典
- hash类型用于存储对象,对象的结构为属性,值
- 值的类型为string
- 设置单个属性语法:hset key field value,设置多个属性语法:hmset key field1 value1 field2 value2….
# 设置哈希字段
HSET user:id123 name "Alice" age 30
# 获取哈希字段值
HGET user:id123 name
HGET user:id123 age
使用场景
- 存储用户信息,能够单独修改用户的某一属性信息
List-列表
- redis使用的是双端链表实现的list
- list的元素类型为string
- 按照插入的顺序排序
- 插入语法:lpush/rpush key value1 value2….
- 弹出元素:blpop/brpop key index timeout
# 在列表的左侧插入元素
LPUSH tasks "task1"
LPUSH tasks "task2"
# 获取列表的元素
LRANGE tasks 0 -1
使用场景
- 消息队列:可以利用redis 的*push的操作将任务存在list中,工作线程再用b*pop的操作取出任务执行
- 文章列表或记录事件的timeline等:利用的redis的list存储不但有序,取出时使用*range命令可以按范围取出元素
Set-集合
- 无序集合
- 元素为string类型
- 元素具有唯一性
- 集合没有修改操作
- 可以计算交集、并集,差集
# 向集合中添加元素
SADD tags "tag1" "tag2" "tag3"
# 获取集合的所有元素
SMEMBERS tags
使用场景
- 计算共同好友,共同浏览过的商品等:例如将两个用户浏览过的商品集合做交集,即可得到共同浏览过的商品
- 统计访问网站的所有独立IP
- 好友推荐:利用用户的tag求交集,按照业务需求分析交集内容,可做好友推荐等类型功能
Zset-有序集合
- sorted set,有序集合
- 元素为string类型
- 元素具有唯一性
- 每个元素都会关联一个double类型的score,表示权重,会按权重从小到大排序
- 没有修改操作
# 向有序集合添加成员并指定分数
ZADD leaderboard 100 "player1" 200 "player2" 50 "player3"
# 获取有序集合中分数范围内的成员
ZRANGEBYSCORE leaderboard 0 150
使用场景
- 排行榜:自带去重排序功能,可以根据需求,比如使用点击量访问量等作为score
正文完