2、Redis-Hash【常用】

目录

一、Hash和String的区别

二、常用命令与演示

三、Redis中Hash类型应用场景


一、Hash和String的区别

这是String,

keyvalue
nameTrxcx

这是Hash,

keyvalue
studentTrxcxnameTrxcx
age21
sexmale

可以明显的看出,String的value就是一条数据,而Hash的value是由多个“key-value”组成的。

因此,很容易发现,Hash的value适用于存储对象。

为了明确地区分,我们把Hash的value部分的“key”称为field,value部分的“value”称为value。

例如,上面的例子中,studentTrxcx是key,name是field,Trxcx是value。

总结:

关于String,每一条数据(value)由一个索引(key)获得;

关于Hash,每一条数据(value)由两个索引(key和field)获得。


二、常用命令与演示

常用命令

格式含义例子
hset key field value缓存key下的field-valuehset studentTrxcx name Trxcx
hget key field获取key下的field对应的value值

hget studentTrxcx name

hexists key field判断key下的field是否存在hexists studentTrxcx name
hdel key field删除key下的field字段hdel studentTrxcx age
hincrby key field incrementkey下field字段对应value值加上incrementhincrby studentTrxcx age 1

hlen key

获取key下的field字段数量hlen studentTrxcx
hkeys key获取key下所有field字段hkeys studentTrxcx
hvals key获取key下所有field字段对应的value值hvals studentTrxcx
hgetall key获取每一组field-value值hgetall studentTrxcx
127.0.0.1:6379> hset studentTrxcx name Trxcx
(integer) 1
127.0.0.1:6379> hget studentTrxcx name
"Trxcx"
127.0.0.1:6379> hset studentTrxcx age 21
(integer) 1
127.0.0.1:6379> hget studentTrxcx age
"21"
127.0.0.1:6379> hget studentTrxcx // 无法直接hget到key下的所有数据
(error) ERR wrong number of arguments for 'hget' command
127.0.0.1:6379> hexists studentTrxcx name // key对应的field存在,则返回1,否则返回0
(integer) 1
127.0.0.1:6379> hexists studentTrxcx sex
(integer) 0
127.0.0.1:6379> hdel studentTrxcx age
(integer) 1
127.0.0.1:6379> hget studentTrxcx age
(nil)
127.0.0.1:6379> hset studentTrxcx age 21
(integer) 1
127.0.0.1:6379> hincrby studentTrxcx age 1
(integer) 22
127.0.0.1:6379> hget studentTrxcx age
"22"
127.0.0.1:6379> hlen studentTrxcx
(integer) 2
127.0.0.1:6379> hkeys studentTrxcx
1) "name"
2) "age"
127.0.0.1:6379> hvals studentTrxcx
1) "Trxcx"
2) "22"
127.0.0.1:6379> hgetall studentTrxcx
1) "name"
2) "Trxcx"
3) "age"
4) "22"

三、Redis中Hash类型应用场景

共享session,和使用string的区别是:

如果把user对象转换为json字符串存redis,此时使用string类型来实现共享session,方便查找但不利于修改(要改动某个字段需要获取整个对象)【实际中常用】

如果把user对象转换为hash对象存redis,此时使用hash类型来实现共享session,方便修改但不利于查找(查找的时候获取到的是map,要再次转换为对象)

  • 15
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值