Redis 学习笔记3 - 数据结构

  1. 数据结构
    深刻理解这五种数据结构,它们的工作原理,它们提供的方法,以及怎样用这些数据结构去建模,是学习理解 Redis 的关键。 首先要弄明白这些数据结构的具体含义。

五种数据结构

(1) Strings (字符串结构)
(2) Hashes (哈希结构)
(3) Lists (列表结构)
(4) Sets (集合结构)
(5) Sorted Sets (有序集合结构)
1.1 Strings (字符串结构)
经典的 键值对结构,value 可以简单理解为字符串,不过还可以是整数。

关键字: set , get

1.1.1 value是可序列化的字符串
大多数情况下,Redis 会把 value 作为字节数组对待。可以存储 字符,有格式的序列化字符串(JSON, XML )等。
示例:

// 设置
set users:leto ‘{“name”: leto, “planet”: dune, “likes”: [“spice”]}’
// 读取
get users:leto
// 获得长度
strlen users:leto
// 获得 区间内的字符
getrange users:leto 31 48
// 追加到末尾
append users:leto " OVER 9000!!"
1.1.2 value也可以是数字
一般做一些复杂的计数功能的缓存。
下面演示了对值进行增减操作:

// 加一操作
incr stats:page:about
// incrby 是增加指定数字,多了个参数指定
incrby ratings:video:12333 5

1.2 Hashes (哈希结构)
哈希结构 增加了另外一层中间层: 字段。就像 描述了一个人叫张三,他还有姓名,年龄,等字段。

关键字: hset , hget

示例:

hset users:goku powerlevel 9000
hget users:goku powerlevel
我们拆解来看这句“hset users:goku powerlevel 9000”
hset 是命令字,users:goku 是key , powerlevel 是成员字段,这个字段的值是 9000.

可以批次处理多个字段,示例:

// 可以一次设定多个字段
hmset users:goku race saiyan age 737
// 一次获取多个字段
hmget users:goku race powerlevel
// 获取所有的字段和值
hgetall users:goku
// 列出所有的字段清单
hkeys users:goku
// 删除指定字段:
hdel users:goku age
它有更小的粒度,它很方便,你可以拉取,更新,删除指定的字段,而不用操作整个值。

而且确实,从性能方面来看,更细颗粒的操作是必须的。

1.3 Lists (列表结构)
它的 value 以数组形式的 存储。

关键字: lpush , rpush, ltrim,llen

你可以向数组插入值,获取第一个或者最后一个值,以及操作指定索引位置上的值。

示例:

// 从左侧插入一条数据
lpush newusers goku

// 从右侧插入一条数据
rpush newusers goku
// 只保留 0-49
ltrim newusers 0 49
// 查看长度
llen newusers
可以用列表结构来存储日志或者跟踪用户访问网站的路径足迹。
它可以当做队列来使用。在此我向大家推荐一个架构学习交流圈。交流学习指导伪鑫:1253431195(里面有大量的面试题及答案)里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构等这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

1.4 Sets (集合结构)
集合结构被用于存储唯一值。
集合是无序的。
它提供了一组基于集合的操作,比如说并集运算。

关键字: sadd ,sismember

示例:

// 添加
sadd friends:leto ghanima paul chani jessica
// 检索 成员
sismember friends:leto jessica
// 交集
sinter friends:leto friends:duncan

//直接可以把这个结果存到一个新 key 中:
sinterstore friends:leto_duncan friends:leto friends:duncan

集合非常适用于:
需要标记或者跟踪那些有重复属性的值的时候。
或者我们希望使用集合的交并操作的时候。

1.5 Sorted Sets (有序集合结构)
有序集合结构就像集合结构一样,但是有权重(score)。

关键字: zadd ,zcount, zrevrank

权重提供了排序和排名功能。如果我们想看朋友排名,我们可以这样:

// value 有很多个,每个都设置了一个数字表示 权重
zadd friends:duncan 70 ghanima 95 paul 95 chani 75 jessica 1 vladimir
// 权重是在 90 及以上的
zcount friends:duncan 90 100
// 查询排序
zrevrank friends:duncan chani

可以 用 zrevrank 来代替 zrank,Redis 默认排序是从低到高的。
有序集合最常见的用例就是排行榜系统了。

1.6 小结
每种数据类型都有它的适用场景,根据业务需要作出选择。

END

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值