Java从零开始学Rediis——3.Redis五种数据类型(String、Hash、List、SortedSet(zSet)、Set)和消息订阅

五种数据类型

String、Hash、List、SortedSet(zSet)、Set

Redis Key/Value数据类型

String是最常用的一种数据类型,普通的key/value存储都可以归为此类。

set/get

设置key对应的值为String类型的value
获取key对应的值
在这里插入图片描述

mget

批量获取多个key的值,如果可以不存在则返回nil
在这里插入图片描述

incr && incrby

incr对key对应的值进行加加操作,并返回新的值;
incrby加指定值
在这里插入图片描述
在这里插入图片描述

decr && decrby

incr对key对应的值进行减减操作,并返回新的值;
decrby减指定值
在这里插入图片描述
在这里插入图片描述

setnx

设置key对应的值为String类型的value,如果key已经存在则返回0
在这里插入图片描述

setex key time(s) value

设置key对应的值为String类型的value,并设定有效期
在这里插入图片描述

其他命令

getrange 获取key对应value的子字符串
在这里插入图片描述

mset 批量设置多个key的值,如果成功表示所有值都被设置,否则返回0表示没有任何值被设置
在这里插入图片描述

msetnx,同mset,不存在就设置,不会覆盖已有的key。当所有 key 都成功设置,返回 1 。 如果所有给定 key 都设置失败(至少有一个 key 已经存在),那么返回 0 。
在这里插入图片描述

getset 设置key的值,并返回key旧的值
在这里插入图片描述

append:给指定key的value追加字符串,并返回新字符串的长度
在这里插入图片描述

Redis Hash类型

Hash是一个String类型的field和value之间的映射表

redis的Hash数据类型的key(hash表名称)对应的value实际的内部存储结构为一个HashMap

Hash特别适合存储对象

相对于把一个对象的每个属性存储为String类型,将整个对象存储在Hash类型中会占用更少内存。

所存储的成员较少时数据存储为zipmap,当成员数量增大时会自动转成真正的HashMap,此时encoding为ht。

运用场景: 如用一个对象来存储用户信息,商品信息,订单信息等等。

Hash命令讲解

hset——设置key对应的HashMap中的field的value
在这里插入图片描述

hget——获取key对应的HashMap中的field的value
在这里插入图片描述

hgetall——获取key对应的HashMap中的所有field的value
在这里插入图片描述

hlen–返回key对应的HashMap中的field的数量
在这里插入图片描述
hmget/hmset和hdel的使用
在这里插入图片描述

Redis List类型

lpush——在key对应的list的头部添加一个元素(先进后出)
在这里插入图片描述
lpop——从key对应的list的尾部删除一个元素,并返回该元素
在这里插入图片描述

lrange——获取key对应的list的指定下标范围的元素,-1表示获取所有元素
在这里插入图片描述

rpush——在key对应的list的尾部添加一个元素
在这里插入图片描述

rpop——从key对应的list的尾部删除一个元素,并返回该元素
在这里插入图片描述

lindex——获取下标第几个元素
在这里插入图片描述
llen——获取列表长度
在这里插入图片描述
lrem——移除列表中与参数 VALUE 相等的元素。
格式:IREM KEY_NAME COUNT VALUE
count > 0 : 从表头开始向表尾搜索,移除与 VALUE 相等的元素,数量为 COUNT 。
count < 0 : 从表尾开始向表头搜索,移除与 VALUE 相等的元素,数量为 COUNT 的绝对值。
count = 0 : 移除表中所有与 VALUE 相等的值。
在这里插入图片描述

Redis Set类型(自己尝试吧)

sadd——在key对应的set中添加一个元素
smembers——获取key对应的set的所有元素
spop——随机返回并删除key对应的set中的一个元素
suion——求给定key对应的set并集
sinter——求给定key对应的set交集

Redis SortSet类型

set的基础增加顺序score,再根据score进行排序 实战:通过sortset实现排行榜
zadd ——在key对应的zset中添加一个元素
在这里插入图片描述

zrange——获取key对应的zset中指定范围的元素,-1表示获取所有元素(也可以带分数)
在这里插入图片描述
在这里插入图片描述

zrem——删除key对应的zset中的一个元素
在这里插入图片描述

zrangebyscore——返回有序集key中,指定分数范围的元素列表(MIN—MAX),排行榜中运用
在这里插入图片描述

zrank——返回key对应的zset中指定member的排名。其中member按score值递增(从小到大); 排名以0为底,也就是说,score值最小的成员排名为0,排行榜中运用
在这里插入图片描述

set是通过hashmap存储,key对应set的元素,value是空对象
sortset是怎么存储并实现排序的呢,hashmap存储,还加了一层跳跃表 跳跃表:相当于双向链表,在其基础上添加前往比当前元素大的跳转链接
在这里插入图片描述
在这里插入图片描述

**跳跃表:**从最高层开始,一层一层往下找
在这里插入图片描述

Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多 种类型的数据结构,如 字符串(strings)、散列(hashes)、 列表(lists)、 集合(sets)、 有序集合(sorted sets)等。

消息订阅

通过中间件发送消息,解耦合,降低风险(如果没有中间件的话,如果发送第一个失败,后续是否继续发送是个问题)
在这里插入图片描述
作用:发布订阅类似于信息管道,用来进行系统之间消息解耦,类似于mq,rabbitmq、rocketmq、kafka、activemq主要有消息发布者和消息订阅者。比如运用于:订单支付成功,会员系统加积分、钱包进行扣钱操作、发货系统(下发商品)

PUBLISH 将信息message发送到指定的频道channel。返回收到消息的客户端数量
在这里插入图片描述

SUBSCRIBE 订阅给指定频道的信息
在这里插入图片描述

UNSUBSCRIBE 取消订阅指定的频道,如果不指定,则取消订阅所有的频道。
在这里插入图片描述

redis的消息订阅发布和mq对比? 答:redis发布订阅功能比较薄弱但比较轻量级,mq消息持久化,数据可靠性比较差,无后台功能可msgId、msgKey进行查询消息

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java天下第1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值