前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >认识redis数据类型

认识redis数据类型

作者头像
老雷PHP全栈开发
发布2020-07-02 12:18:38
1.4K0
发布2020-07-02 12:18:38
举报

本节课程我们主要来认识一下redis数据类型

redis数据类型:

字符串(strings),

散列(hashes),

列表(lists),

集合(sets),

有序集合(sorted sets),

bitmaps,

hyperloglogs

地理空间(geospatial)

streams

公用命令

del key

expire key 5

ttl key

exists key

一、strings 字符串

最基本数据类型,我们可以存文本也可以存二进制内容。

用途

k-v存储

常用命令

SET key value [ex second]

GET key

MGET key1 [key2..]

MSET key value [key value ...]

SETEX key seconds value

二、hash 散列

Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。

跟json类似,跟PHP的array也类似

用途

存储用户信,产品信息等

user=>userid,nickname,age

常用命令

HSET key field value

HGET key field

HMSET key field1 value1 [field2 value2 ]

HMGET key field1 [field2]

HGETALL key

HKEYS key

HDEL key field [field2]

三、list 列表

PHP中的array

用途

评论列表,消息队列

我们可以给一篇文章设置一个list key,然后存储文章的评论

常用命令

LPUSH key value1 [value2] 将一个或多个值插入到列表头部

RPUSH key value1 [value2] 在列表中添加一个或多个值

LLEN key 获取列表长度

LRANGE key start stop 获取列表指定范围内的元素

LPOP key 移出并获取列表的第一个元素

RPOP key 移除并获取列表最后一个元素

四、sets 无序集合

集合就是一堆不重复值的组合。交集、并集、差集。

用途

标签数据,用户关系,扑克游戏

常用命令

SADD key member1 [member2] 向集合添加一个或多个成员

SCARD key 获取集合的成员数

SDIFF key1 [key2] 返回给定所有集合的差集

SINTER key1 [key2] 返回给定所有集合的交集

SUNION key1 [key2] 返回所有给定集合的并集

SISMEMBER key member 判断 member 元素是否是集合 key 的成员

SMEMBERS key 返回集合中的所有成员

SPOP key 移除并返回集合中的一个随机元素

SRANDMEMBER key [count] 返回集合中一个或多个随机数

五、sorted sets 有序集合

有序集合每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。

有序集合的成员是唯一的,但分数(score)却可以重复。

用途

做排行榜,比如成绩排行,游戏排行

常用命令

ZADD key score1 member1 [score2 member2] 向有序集合添加一个或多个成员,或者更新已存在成员的分数

ZCARD key 获取有序集合的成员数

ZCOUNT key min max 计算在有序集合中指定区间分数的成员数

ZINCRBY key increment member 有序集合中对指定成员的分数加上增量 increment

ZLEXCOUNT key min max 在有序集合中计算指定字典区间内成员数量

ZRANGE key start stop [WITHSCORES] 通过索引区间返回有序集合成指定区间内的成员

ZRANGEBYLEX key min max [LIMIT offset count] 通过字典区间返回有序集合的成员

ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT] 通过分数返回有序集合指定区间内的成员

ZRANK key member 返回有序集合中指定成员的索引

ZREM key member [member ...] 移除有序集合中的一个或多个成员

ZREMRANGEBYLEX key min max 移除有序集合中给定的字典区间的所有成员

ZREMRANGEBYRANK key start stop 移除有序集合中给定的排名区间的所有成员

ZREMRANGEBYSCORE key min max 移除有序集合中给定的分数区间的所有成员

ZREVRANGE key start stop [WITHSCORES] 返回有序集中指定区间内的成员,通过索引,分数从高到底

ZREVRANGEBYSCORE key max min [WITHSCORES] 返回有序集中指定分数区间内的成员,分数从高到低排序

ZREVRANK key member 返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序

ZSCORE key member 返回有序集中,成员的分数值

六、bitmaps

BitMap 就是通过一个 bit 位来表示某个元素对应的值或者状态,一般值为0或1.

用途

统计活跃数据,统计在线人数等

https://www.jianshu.com/p/62cf39db5c2f

常用命令

SETBIT key offset value set ww 1234 0 set ww 1235 1 set ww 1236 1

GETBIT key offset

BITCOUNT key [start end] 统计值为1

BITOP operation destkey key [key ...] 位运算

七、hyperloglogs

Redis 的基数统计,这个结构可以非常省内存的去统计各种计数,比如注册 IP 数、每日访问 IP 数、页面实时UV)、在线用户数等。但是它也有局限性,就是只能统计数量 而且是估值,而没办法去知道具体的内容是什么。

常用命令

PFADD key element [element ...] 添加

PFMERGE destkey sourcekey [sourcekey ...] 合并多可key

PFCOUNT key [key ...] 统计

八、geo 地理空间

地理位置

用途

与地理位置相关 如附近的人,景点,位置距离

常用命令

GEOADD key longitude latitude member [longitude latitude member ...] 设置

GEOHASH key member [member ...] 返回一个或多个位置元素的 Geohash 表示。

GEOPOS key member [member ...] 从key里返回所有给定位置元素的位置(经度和纬度)

GEODIST key member1 member2 [unit] 返回两个给定位置之间的距离。

GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count]

以给定的经纬度为中心, 返回键包含的位置元素当中, 与中心的距离不超过给定最大距离的所有位置元素。

GEORADIUSBYMEMBER key member radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count]

以给你的成员位置,找出指定范围内的元素

九、streams

http://www.redis.cn/topics/streams-intro.html

https://yq.aliyun.com/articles/603193?spm=a2c4e.11163080.searchblog.149.546f2ec1vWOtok

它以更抽象的方式模拟日志数据结构,但日志仍然是完整的:就像一个日志文件,通常实现为以只附加模式打开的文件,Redis流主要是一个仅附加数据结构。

用途

消息队列

常用命令

XADD key ID field string [field string ...] 将指定的流条目追加到指定key的流中

XACK key group ID [ID ...] XACK命令用于从流的消费者组的待处理条目列表(简称PEL)中删除一条或多条消息。

XGROUP [CREATE key groupname id-or-] [SETID key id-or-] [DESTROY key groupname] [DELCONSUMER key groupname consumername] 该命令用于管理流数据结构关联的消费者组

XRANGE key start end [COUNT count] 返回流中满足给定ID范围的条目

XREVRANGE key end start [COUNT count] 此命令与XRANGE完全相同,但显著的区别是以相反的顺序返回条目,并以相反的顺序获取开始-结束参数

XPENDING key group [start end count] [consumer] 通过消费者组从流中获取数据,而不是确认这些数据,具有创建待处理条目的效果

XREAD [COUNT count] [BLOCK milliseconds] STREAMS key [key ...] ID [ID ...]

从一个或者多个流中读取数据,仅返回ID大于调用者报告的最后接收ID的条目。此命令有一个阻塞选项,用于等待可用的项目,类似于BRPOP或者BZPOPMIN等等。

XREADGROUP GROUP group consumer [COUNT count] [BLOCK milliseconds] STREAMS key [key ...] ID [ID ...]

类似xread,只是从组中读取数据

XTRIM key MAXLEN [~] count XTRIM将流裁剪为指定数量的项目。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 老雷PHP全栈开发 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档