redis 学习笔记

Redis 目前支持的数据结构包含以下五种:

  • String:字符串
  • List:列表
  • Set:集合
  • SortedSet:有序集合
  • Hash:哈希字典

INCR 

除了字符串格式的值外,还支持数字格式的值,我们可以利用这个特性实现计数器功能,比如浏览数、购买数、点赞数等,这个时候,我们可以使用 INCR 命令来初始化对应的键值

INCRBY 

取还是通过 GET 指令,默认步长是 1,即每次调用 INCR 指令会将对应的键值 +1,此外,还可以通过 INCRBY 显式设置步长,比如我们在前面的基础上将步长设置为 5,可以这么做: 

Zincrby 命令对有序集合中指定成员的分数加上增量 increment

//设置文章id为1的热度为2
//        key   increment(可以为负) 
zincrby article          2              1 

//zrevrange  key  start end
zrevrange  article 0 9

DECR/DECRBY

与 INCR/INCRBY 相对的是 DECR/DECRBY 指令,即对给定键值做 -1 操作或者做给定步长的减少操作(对应取消点赞之类的操作)

List:列表

        应用场景一般用在队列中

        特点:有序的,可以重复,

eg:我们从尾部添加数据,从头部读取数据。

左进右出

lpush  skill 'php' 

lpush skill 'java'

lpush skll 'js'   左边最后推进去

lrange skill 0 -1 获取完整list列表

lpop    skill   右边第一个取出来值为:php

上述数据添加和获取符合「先入先出」规则,所以是一个标准的队列结构。

当然了,还有与之相对的 RPOP 和 LPUSH 指令,你可以基于 LPUSH 和 LPOP 实现栈这种数据结构,这里就不单独演示了。

Set:集合

        应用场景:我的好友列表,我的粉丝

        特点:互异不可重复,无序的

Redis 集合中所有元素都是互异的,即任意一个元素都是唯一的,当我们尝试向集合中添加相同元素时,会忽略后续添加的值,比如我们通过 SADD 指令尝试向 skills 集合添加两个相同的 PHP 元素:

sadd 添加集合      

SADD KEY_NAME VALUE1..VALUEN

smembers 集合的key  查看集合包含的value

有序集合

但有些时候我们的业务场景既要去重,又要确保排序,比如一些热门数据排行榜的实现,因此,Redis 还支持另一种数据结构 —— 有序集合。

顾名思义,有序集合就是在集合的基础上让内部元素有确定的排序,不过这个排序不是按照添加时的顺序,而是通过额外的排序字段值指定,还是以上面的例子为例。

zadd key sort value
eg:zadd skill 0 'php'
    zadd skill 1 'java'

zrange key start end
eg:zrange skill 0 1

zadd和 SADD 指令不同,在元素值之前插入了一个数值(score),在返回有序集合时,默认会根据这个数值进行升序排序:

和 LRANGE 指令一样,最后面的两个数字表示集合区间,前面是起始位置,后面是结束位置,-1 表示集合末尾索引值。

一些排行榜功能,比如热门阅读、热门讨论等比较适合有序集合

哈希字典

可以通过 HSET 指令逐个添加字典元素:

hset student.1 name 'lilei'
hset student.1 class '7'
hset student.1 grade 'a'
hmset
hmset student.2 name 'fu' class '7' grade 'b'

//通过 HKEYS 指令获取所有键,通过 HVALS 指令获取所有值:
hkeys student.1
hvals student.1

//可以通过 HGET 指令获取单个字典字段值,也可以通过 HMGET 指令获取多个字典字段值,还可以通过 //HGETALL 指令获取所有字典字段值
hget student.1 name 
hmget student.1 name grade
hgetall student.1

通过 HMSET 指令一次性设置多个字典字段

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值