专栏首页老雷PHP全栈开发认识redis数据类型

认识redis数据类型

本节课程我们主要来认识一下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将流裁剪为指定数量的项目。

本文分享自微信公众号 - 老雷PHP全栈开发(L362606856),作者:雷日锦

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-08-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • flask教程之路由及模块化

    在一个项目中通常会有很多路由地址,如果我们都配置在一个文件会显得很乱,所以我们会按功能模块来划分。

    老雷PHP全栈开发
  • 老雷PHP全栈开发教程之vuex

    本节课程内容主要讲解vuex的使用,Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。

    老雷PHP全栈开发
  • PHP运算符

    老雷PHP全栈开发
  • Redis学习二(数据操作).

    在 redis-cli 中使用中文时,必须打开 --raw 选项,才能正常显示中文。

    JMCui
  • Redis-Nosql数据库入门

    简介 Redis是Nosql数据库的一种,可基于内存亦可持久化的日志型、是一个Key-Value数据库,多用在缓存方面 安装 Windows 下载地址, 最...

    李家酒馆酒保
  • 【Redis】Redis常用命令

    expire key seconds 当超过过期时间,会自动删除,key在seconds秒后过期 expireat key timest...

    用户5522200
  • redis 学习(3)-- String 类型

    当我们通过 id 查找相关信息,redis 做中间层,当数据缓存在 redis 中时,我们直接返回该数据,如果 redis 中不存在,就到 MYSQL 中查...

    希希里之海
  • Redis常用命令、5种数据类型的内部编码实现以及实用场景

    相信绝大部分人,应该是99%的人都知道Redis的5种的基本类型、它们分别是:字符串、哈希、列表、集合、有序集合,就如同下图这样:

    Java学习录
  • redis

    1)Redis:REmote DIctionary Server(远程字典服务器)

    用户2337871
  • Redis数据库的命令行操作

    1.Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

    IT云清

扫码关注云+社区

领取腾讯云代金券