hash 和java的hashmap很像,无序,内部实现结构数组+链表二维结构。第一维位置碰撞时,将会使用链表将碰撞的元素串起来。
image.pnghash的结构可以存储对象的信息,可以将对象的每个字段单独保存起来,需要的时候可以进行部分获取。
对比字符串一次性存储,读取对象的信息,节约了网络流量。
使用hash还是字符串的形式存储对象信息,还是根据实际情况而定。
127.0.0.1:6379> hset student name hd
(integer) 1
127.0.0.1:6379> hset student age 30
(integer) 1
127.0.0.1:6379> hgetall student #key value 交替出现
1) "name"
2) "hd"
3) "age"
4) "30"
127.0.0.1:6379> hlen student
(integer) 2
127.0.0.1:6379> hget student age
"30"
127.0.0.1:6379> hset student age 18
(integer) 0
127.0.0.1:6379> hget student age
"18"
127.0.0.1:6379> hincrby student age 2 # 如果是数字类型,可以使用自增
(integer) 20
127.0.0.1:6379> hget student age
"20"
127.0.0.1:6379> hdel student age
(integer) 1
127.0.0.1:6379> hget student age
(nil)
127.0.0.1:6379> hexists student age
(integer) 0
127.0.0.1:6379> hmset book name java author hd # 同时设置多个field-value 到hash的key中
OK
127.0.0.1:6379> hmget book name author # 同时获取多个field的值
1) "java"
2) "hd"
127.0.0.1:6379> hkeys book
1) "name"
2) "author"
127.0.0.1:6379> hsetnx book name py # 如果field不存在则设置
(integer) 0
127.0.0.1:6379> hmget book name
1) "java"
127.0.0.1:6379> hget book name
"java"
都是一些日常总结,
如果您觉得有帮助的话,记得 评论,关注,转发,收藏,双击么么哒。
网友评论