35人参与 • 2025-08-09 • Redis
redis内存数据库中,除了基础的string类型外,hash和list也是开发中频繁使用的两种数据结构,下面详细讲解hash和list类型的特点、常用命令及典型应用场景,以便处理复杂业务需求。
hash类型(哈希)是一个键值对集合,类似于java中的hashmap
或python中的字典。它适合存储对象类数据,能够实现对对象属性的精准操作,避免了string类型中序列化整个对象的开销。
假设我们要存储用户信息,以user:100
作为hash的键,包含id
、name
、age
、email
等字段。
hset key field value:为哈希表中的字段设置值,返回受影响的字段数量
127.0.0.1:6379> hset user:100 id 100 name "张三" age 25 (integer) 3
hmset key field1 value1 field2 value2 …:同时设置多个字段值(redis 4.0.0后推荐使用hset替代)
127.0.0.1:6379> hmset user:100 email "zhangsan@example.com" gender "男" ok
hget key field:获取哈希表中指定字段的值
127.0.0.1:6379> hget user:100 name "张三"
hmget key field1 field2 …:获取多个字段的值
127.0.0.1:6379> hmget user:100 id age gender 1) "100" 2) "25" 3) "男"
hgetall key:获取哈希表中所有字段和值
127.0.0.1:6379> hgetall user:100 1) "id" 2) "100" 3) "name" 4) "张三" 5) "age" 6) "25" ...
127.0.0.1:6379> hdel user:100 gender (integer) 1
hexists key field:判断字段是否存在,存在返回1,否则返回0
127.0.0.1:6379> hexists user:100 email (integer) 1
hlen key:获取哈希表中字段的数量
127.0.0.1:6379> hlen user:100 (integer) 4
hkeys key:获取哈希表中所有字段名
127.0.0.1:6379> hkeys user:100 1) "id" 2) "name" 3) "age" 4) "email"
hvals key:获取哈希表中所有字段值
127.0.0.1:6379> hvals user:100 1) "100" 2) "张三" 3) "25" 4) "zhangsan@example.com"
hincrby key field increment:为数字类型字段增加指定增量
127.0.0.1:6379> hincrby user:100 age 1 (integer) 26
list类型(列表)是一个有序的字符串集合,类似于java中的linkedlist
,允许元素重复,底层采用双向链表结构实现,适合做队列或栈操作。
以存储文章评论列表为例,使用article:100:comments
作为list的键。
lpush key value1 value2 …:从列表头部插入一个或多个元素,返回插入后列表的长度
127.0.0.1:6379> lpush article:100:comments "这篇文章很有用" "学习了" (integer) 2
rpush key value1 value2 …:从列表尾部插入一个或多个元素
127.0.0.1:6379> rpush article:100:comments "感谢分享" (integer) 3
lpop key:移除并返回列表的第一个元素
127.0.0.1:6379> lpop article:100:comments "学习了"
rpop key:移除并返回列表的最后一个元素
127.0.0.1:6379> rpop article:100:comments "感谢分享"
lrange key start stop:获取列表中指定范围的元素(0表示第一个元素,-1表示最后一个元素)
127.0.0.1:6379> lpush article:100:comments "评论1" "评论2" "评论3" (integer) 4 127.0.0.1:6379> lrange article:100:comments 0 -1 1) "评论3" 2) "评论2" 3) "评论1" 4) "这篇文章很有用"
lindex key index:获取列表中指定索引的元素
127.0.0.1:6379> lindex article:100:comments 1 "评论2"
llen key:获取列表的长度
127.0.0.1:6379> llen article:100:comments (integer) 4
ltrim key start stop:保留列表中指定范围的元素,删除其他元素
127.0.0.1:6379> ltrim article:100:comments 0 1 ok 127.0.0.1:6379> lrange article:100:comments 0 -1 1) "评论3" 2) "评论2"
lrem key count value:删除列表中与value相等的元素,count指定删除数量(正数从头部开始,负数从尾部开始,0删除所有)
127.0.0.1:6379> lrem article:100:comments 1 "评论2" (integer) 1
lset key index value:设置列表中指定索引的元素值
127.0.0.1:6379> lset article:100:comments 0 "最新评论" ok
rpoplpush source destination:移除source列表的最后一个元素,并将其添加到destination列表的头部
127.0.0.1:6379> rpoplpush article:100:comments article:101:comments "这篇文章很有用"
总结
到此这篇关于redis中的hash和list类型常用命令及应用分析的文章就介绍到这了,更多相关redis hash和list类型常用命令内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论