你不知道的Redis:入门?数据结构?常用指令?( 二 )


3,哈希hash是一个string类型的field和value的映射表 , hash特适合用于存储对象
你不知道的Redis:入门?数据结构?常用指令?文章插图
操作指令: hmset user:1 name Dk age 18
2.2.2 hash常用命令
你不知道的Redis:入门?数据结构?常用指令?文章插图
2.2.3 hash对象存放优点1 , 原生:set user:1:name Dk;
set user:1:age 23;
set user:1:sex boy;
优点:简单直观 , 每个键对应一个值
缺点:键数过多 , 占用内存多 , 用户信息过于分散 , 不用于生产环境
2 , 将对象序列化存入redis
set user:1 serialize(userInfo);
优点:编程简单 , 若使用序列化合理内存使用率高
缺点:序列化与反序列化有一定开销 , 更新属性时需要把userInfo全取出来进行反序列化 , 更新后再序列化到redis
3 , 使用hash类型:
hmset user:1 name Dk age 23 sex boy
优点:简单直观 , 使用合理可减少内存空间消耗
缺点:要控制ziplist与hashtable两种编码转换 , 且hashtable会消耗更多内存erialize(userInfo);
2.2.4 内部编码hash的内部编码主要有ziplist<压缩列表>和hashtable<哈希表>两种 , 大家感兴趣的话后面可以单独个章节介绍下这两种数据结构
当field 个数少且没有大的value 时 , 内部编码为ziplist
如:hmset user:3 name Dk age 24; object encoding user:3 //返回ziplist
当value 大于64 字节 , 内部编码由ziplist 变成hashtable
如:hset user:4 address “fsgst64 字节”; object encoding user:3 //返回hashtable
2.3 列表2.3.1 list简介用来存储多个有序的字符串 , 一个列表最多可存2的32次方减1个元素
你不知道的Redis:入门?数据结构?常用指令?文章插图
因为有序 , 可以通过索引下标获取元素或某个范围内元素列表 , 列表元素可以重复
2.3.2 list常用命令
你不知道的Redis:入门?数据结构?常用指令?文章插图
2.4 集合2.4.1 集合应用场景用户标签 , 社交 , 查询有共同兴趣爱好的人,智能推荐
保存多元素 , 与列表不一样的是不允许有重复元素 , 且集合是无序 , 一个集合最多可存2的32次方减1个元素 , 除了支持增删改查 , 还支持集合交集、并集、差集;
你不知道的Redis:入门?数据结构?常用指令?文章插图
2.4.2 set命令:
你不知道的Redis:入门?数据结构?常用指令?文章插图
2.4.3 使用示例当我们要根据用户标签筛选有同兴趣爱好的人,实现智能推荐 , 可以按照这种方式进行计算
1、给用户添加标签:
sadd user:1:fav basball fball pq
sadd user:2:fav basball fball
............
2、或者标签添加用户
sadd basball:users user:1 user:2
sadd fball:users user:1 user:2
.......
3、计算出共同感兴趣的人:
sinter user:1:fav user2:fav
2.5 有序集合(ZSET)2.5.1 常用场景常用于排行榜 , 如视频网站需要对用户上传视频做排行榜 , 或点赞数 。 与集合有联系 , 不能有重复的成员
你不知道的Redis:入门?数据结构?常用指令?文章插图
三、redis常用命令3.1 常用命令 1 , 查看所有键:
keys * set school enjoy set hello world
keys *ool -----> school


推荐阅读