Redis-集合(Set)基础

Redis集合包括Set(无序集合)和ZSet(有序集合),这里的Set实现相当于Java中的HashSet,它内部实现了一个特殊的字典,字典中所有的value都是一个值NULL。下面我们来熟悉下set的常用的命令

Set

>sadd name hello(integer)1>sadd name hello    #重复,不能插入(integer)0>sadd name i am ok(integer)3>smembers name"hello""i""am""ok">sismember name hello    #检测值是否存在(integer)1>scard name     #获取长度(integer)4>spop name    #获取第一个"hello"

ZSet

zset是一个有序集合,他有着java里的SortedSet和HashMap的特色,它是一个集合能保证内部value唯一,又有一个排序字段score来排序,他的内部结构实现了跳跃列表,俗称跳表,接下来会找个时间来解释zset中的跳表实现。一般来说我们使用zset最多的还是排名,比如直播里面的送礼物排名,粉丝个数排名等

下面我们来使用一些常用的命令

>zadd name 2 world(integer)1>zadd name 1 hello(integer)1>zrange name 0 -1    #按照score升序排列"hello""world">zrevrange name 0 -1    #按照score降序排列"world""hello">zcard name    #获取集合个数(integer)2>zscore name hello    #获取内部score1.0>zrem name world    #删除(integer)1

一般来说我们进行有序的列表进行搜索的时可以使用遍历整个列表,但是为了考虑性能我们使用二分法是最快的,但是列表需要随机插入和删除,这样数据是不适合这样做,那么我们尝试着使用链表,链表很好的支持随机插入和删除,但是链表又不能进行二分法快速查找,那么我们redis里面使用了一个叫跳跃列表的方式来实现zset,关于这方面的分享,我会下后面的章节里详细描述。

一名正在抢救的coder

笔名:mangolove

CSDN地址:https://blog.csdn.net/mango_love

GitHub地址:https://github.com/mangoloveYu

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值