深圳营销网站建设报价,网站开发 .net 开源,单页应用网站,互联网门户网站模板本节中将介绍Redis支持的主要数据结构#xff0c;以及相关的常用Redis命令。redis是一种基于键值对#xff08;key-value#xff09;的内存数据库#xff0c;redis数据结构可以分为string、hash、list、set、sorted set。
redis的五种数据结构和相关指令之Hash
哈希hash …本节中将介绍Redis支持的主要数据结构以及相关的常用Redis命令。redis是一种基于键值对key-value的内存数据库redis数据结构可以分为string、hash、list、set、sorted set。
redis的五种数据结构和相关指令之Hash
哈希hash
哈希hash是一个string类型的field和value的映射表hash特适合用于存储对象用Hash中的field对应对象的field即可。
每个hash对象有三个属性key、field和value每个hash对象有一个key值每个key可以对应多个field每个field对应一个value。
比如将关系型数据表转成redis存储 使用hash后的存储方式为 a、基本命令 设值hset key field value
hset user:1 name james //成功返回1失败返回0
取值hget key field
hget user:1 name //返回james
删值hdel key field
hdel user:1 age //返回删除的个数
计算个数hlen key
hset user:1 name james; hset user:1 age 23;
hlen user:1 //返回2user:1有两个属性值
批量设值
hmset user:2 name james age 23 sex boy //返回OK
批量取值
hmget user:2 name age sex //返回三行james 23 boy 判断field是否存在
hexists user:2 name //若存在返回1不存在返回0 获取所有field时间复杂度O(N)慎用:
hkeys user:2 // 返回name age sex三个field
获取user:2所有value时间复杂度O(N)慎用
hvals user:2 // 返回james 23 boy
获取user:2所有field与value时间复杂度O(N)慎用
hgetall user:2 //name age sex james 23 boy值
增加数值
hincrby user:2 age 1 //age1
hincrbyfloat user:2 age 2 //浮点型加2 b、三种方案实现用户信息存储优缺点
1、string原生
set user:1:name james;
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 james age 23 sex boy
优点 简单直观使用合理可减少内存空间消耗 缺点 要控制ziplist与hashtable两种编码转换且hashtable会消耗更多内存
总结 对于更新不多的情况下可以使用序列化对于VALUE值不大于64字节可以使用hash类型 ———————————————— 版权声明本文为CSDN博主「lingengy」的原创文章遵循CC 4.0 BY-SA版权协议转载请附上原文出处链接及本声明。 原文链接https://blog.csdn.net/w1lgy/article/details/84376841