Redis数据结构

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jdx888/article/details/79495591

Redis有哪些数据结构?

基本的是有5种:字符串String、列表List、集合Set、字典Hash、有序集合SortedSet。

如果是Redis中高级用户,还需要加上下面几种数据结构HyperLogLog、Geo、Pub/Sub以及Redis Module,像BloomFilter,RedisSearch,Redis-ML

(1)Redis HyperLogLog 是用来做基数统计的算法。HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定 的、并且是很小的。因为 HyperLogLog 只会根据输入元素来计算基数,而不会储存输入元素本身,所以 HyperLogLog 不能像集合那样,返回输入的各个元素。

什么是基数?

比如数据集 {1, 3, 5, 7, 5, 7, 8}, 那么这个数据集的基数集为 {1, 3, 5 ,7, 8}, 基数(不重复元素)为5。 基数估计就是在误差可接受的范围内,快速计算基数。

redis HyperLogLog 的基本命令: PFADD 添加 / PFCOUNT 统计/ PFMERGE 将多个HyperLogLog 合并成一个HyperLogLog。

(2)Pub/Sub发布订阅。Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。

 redis 发布订阅常用命令:

SUBSCRIBE channel [channel ...] 订阅给定的一个或多个频道的信息。

PUBLISH channel message 将信息发送到指定的频道。

PSUBSCRIBE pattern [pattern ...] 订阅一个或多个符合给定模式的频道。

(3)GEO: redis目前已经到了3.2版本,3.2版本里面新增的一个功能就是对GEO(地理位置)的支持。

    地理位置大概提供了6个命令,分别为:
    GEOADD
    GEODIST
    GEOHASH
    GEOPOS
    GEORADIUS

    GEORADIUSBYMEMBER

(4)BloomFilter 去重。原理:http://blog.csdn.net/xf_87/article/details/51074642
简单的说就是:通过将一个key的hash值分布到一个大的bit数组上面,判断一个key是否存在时只需判断该的hash对应的bit位是否都是1,如果全是1则表示存在,否则不存在。
优点:性能很高主要在hash算法上面,空间占用小,能够极大的缩小存储空间。

缺点:存在误判。既对应的bit位刚好被其他的key置为1了。

(5)RedisSearch。redis-search4j是一款基于redis的搜索组件。

(6) Redis-ML 模块。


阅读更多
换一批

没有更多推荐了,返回首页