Redis基础-----基本概念及数据类型

0.Redis和Memcached的区别

memcache:仅支持String类型。没有原生的集群模式。使用多核,在处理100K以上数据时更有优势。

Redis:支持多种数据结构,有更丰富的数据操作。用户群体庞大,稳定性高。支持Cluster模式。

1.Redis的数据类型

string

最常规的kv存储,value最大存储512M。

缓存配置信息,缓存常用查询的字段;共享用户session,利用redis将用户的session进行集中管理。

// 增加
add key value
// 查询
get key
// 删除
del key

hash

用于键值对集合,适合存储(无嵌套)对象。

// 增加
HMSET key field1 value1 field2 value2
HSET key field1 value1
// 查询
hget key field
// 删除
hdel key

list

用于存储List列表,可以实现一个简单的消息队列。可以实现文章列表或者数据分页,比如博客网站中博文的分页显示。

// 增加
lpush key value1
// 查询 0表示开始位置 -1表示结束位置
lrange key 0 -1
// 取出元素
rpop key 10

set

String类型的一个无序集合。通过hash表来实现,查找和删除复杂度的O(1)

可以进行一些集合操作,并集、差集、交集等。比如用来查看共同好友。

// 增加
sadd key value
// 查看所有元素
smembers key
// 查看是否包含某个元素
smembers key value
// 删除某个元素
srem key 1
//查看元素个数
scard key
// 随机删除一个元素
spop key
// 对set进行集合操作

//将第一个集合元素移动到第二个集合
smove set1 set2 value1
//求两个set的交集
sinter set1 set2
//求两个set的并集
sunion set1 set2
//求两个set的差集
sdiff set1 set2

sortedset

基于set,可以为其中每一项打分。比如访问量,排行榜,微博热搜等

zadd board 85 zhangsan
zadd board 72 lisi
zadd board 96 wangwu
zadd board 63 zhaoliu

# 获取排名前三的用户(默认是升序,所以需要 rev 改为降序)
zrevrange board 0 3

# 获取某用户的排名
zrank board zhaoliu

2.如果有大量的key需要设置同一时间过期,一般需要注意什么

在过期时间后加一个随机数,避免expire同时进行,造成缓存雪崩。

3.redis分布式锁

setnx指令,为了避免使用的锁占用的过程中系统挂掉,可以给其设置一个过期时间。

4.Redis有10亿个key获取已知前缀开头的,将其全部找出?

通过keys指令可以获取。但是由于Redis是单线程的,使用该指令会造成阻塞,导致其他操作无法进行,在线上使用很危险。

可以使用scan指令来处理,会无阻塞的查出所有的数据,但是可能会有重复。只需要在代码端做一次去重即可。

smembers指令也可以返回集合中所有的元素。

但是SCAN这类增量式迭代指令,在增量迭代的过程中,可能会有key值被修改的问题。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值