Redis 中的 5 种数据类型

Redis 中 有 5 种数据结构,分别是 “字符串/string”,“列表/list”,“集合/set”,“有序集合/zset”,“字典(哈希表)/hash”。

本来我想在这里详细的介绍一下,后来发现网上其实已经有了很多的介绍,并且的话,官方也有一些比较详细的说明,那么我也就没有必要再废话一遍了。

Redis命令参考 这个链接介绍的比较详细。我在这里将该链接内容进行一个小小的汇总。

1. string

1.1 创建系列

创建函数里面有主要记住 set。 想要 判断是否存在就用 setnx 或者 msetnx 想要设置时间就是 setex, psetex。 想要批量设置就是 mset

'increment' 和 'decrement' 表示具体值. 'ex' or 'seconds' 是 秒 'px' or 'milliseconds' 是毫秒. 'start' 和 'end' 在一起表示范围。 'offset' 就是偏移。

'[]' 里面就是可有可无。'...' 就是可以有很多个。 '|' 就是多个挑一个,不能用其他的。

  • setSET key value [EX seconds] [PX milliseconds] [NX|XX]

  • setnxSETNX key value

  • setexSETEX key seconds value

  • psetexPSETEX key milliseconds value

  • mset: MSET key value [key value …]

  • msetnx: MSETNX key value [key value …]

1.2 查询系列

一个字符串有啥好查询的,无非就是 长度 和 值。 值就是包括全部,或者是其中的一部分字串。 所以这里就有 查值 查长度 查指定区间值。 为了减少多次 服务请求 就用 mget。

  • getGET key

  • strlen: STRLEN key

  • getrange: GETRANGE key start end

  • mget: MGET key [key …]

1.3 修改系列

修改就是, 添加到末尾, 或者修改指定位置的值。

  • append: APPEND key value

  • setrangeSETRANGE key offset value

1.4 数值有关:

数值还有啥好说的, +1, -1, +n, -n, +float 记住 'incr' 是 + , 'decr' 是 -。 如果是指定值 就在后面补上 'by', 浮点数的话,再加一个 'float'

  • incr: INCR key

  • decr: DECR key

  • incrby: INCRBY key increment

  • decrby: DECRBY key decrement

  • incrbyfloat: INCRBYFLOAT key increment

2. hash

函数前面 用 'h' 来做前缀, 多字段以及批量用 'm' 来区分。 'vals' 表示值, 'keys' 表示键, 'getall' 就表示都有。 'exists' 判断是否存在, 'scan' 就是扫描。看字典长度用 'len', 字典里面字段长度用 'strlen'.

字典名称用 'key', 字段名称 用 'field', 字段值用 'value', 'cursor' 是游标,'MATCH pattern' 是查询条件,'COUNT count' 是数量。

2.1 创建有关

哈希表嘛,也就是字典。 里面包含了多个字段。 创建的时候,就分为两种,单个字段的,和多个字段的。设置一个字段 hset, 多个字段 hmset。 为单个字段设置过期时间 hsetnx。

  • hset: HSET key field value

  • hsetnx: HSETNX key field value

  • hmset: HMSET key field value [field value …]

2.2 查询有关

查询值,判断是不是存在,看看字典长度,看看字段长度,批量查询。 看看全部的值,看看全部的字段,看看全部字段的值。扫描一下。

  • hget: HGET key field

  • hexists: HEXISTS key field

  • hlen: HLEN key

  • hstrlen: HSTRLEN key field

  • hmget: HMGET key field [field …]

  • hvals: HVALS key

  • hkeys: HKEYS key

  • hgetall: HGETALL key

  • hscan: HSCAN key cursor [MATCH pattern] [COUNT count]

2.3 删除有关

删除,就是删除字段。 删除字典可以用万能删除大法。

  • hdel: HDEL key field [field …]

2.4 修改数值有关

数值修改的话, +n + float 就可以了,其他的,用 +(-n) 就okk 了

  • hincrby: HINCRBY key field increment

  • hincrbyfloat: HINCRBYFLOAT key field increment

3. list

list 喜欢用 'L' 和 'R' 开头。 然后 用一个阻塞 用 'B' 开头。 'push' 是添加, 'pop' 是删除。存在与否是 'x'。'rem' 是删除,'trim' 是保留。'index' 是具体位置。'insert' 就是插入。

两个列表之间 用 'source' 和 'destination' 区分。 阻塞的时间用 'timeout'。 'BEFORE'|'AFTER' 就是 表示插入在 'pivot' 前还是在后。

3.1 push and pop

  • lpush: LPUSH key value [value …]

  • rpush: RPUSH key value [value …]

  • lpop: LPOP key

  • rpop: RPOP key

  • lpushx: LPUSHX key value

  • rpushx: RPUSHX key value

  • rpoplpush: RPOPLPUSH source destination

  • blpop: BLPOP key [key …] timeout

  • brpop: BRPOP key [key …] timeout

  • brpoplpush: BRPOPLPUSH source destination timeout

3.2 删除

  • lrem: LREM key count value

  • ltrim: LTRIM key start stop

3.3 查询

  • llen: LLEN key

  • lindex: LINDEX key index

  • lrange: LRANGE key start stop

3.4 修改和插入

  • lset: LSET key index value

  • linsert: LINSERT key BEFORE|AFTER pivot value

4. set

集合能有啥, 用 's' 开头, 'add' 是添加, 'ismember' 是判断是否存在。 删除有 'pop' 和 'rem', 'rand'有随机的意思。 'members' 有 集合中元素的意思。'inter' 交集,'union' 并集, 'diff' 差集。 'store' 保存新集合。'move' 集合中元素移动。

'member' 和 字典中的 'field' 有点点类似。

4.1 添加

  • sadd: SADD key member [member …]

4.2 判断存在

  • sismember: SISMEMBER key member

4.3 删除

  • spop: SPOP key

  • srem: SREM key member [member …]

4.4 查询

  • srandmember: SRANDMEMBER key [count]

  • scard: SCARD key

  • smembers: SMEMBERS key

  • sscan: SSCAN key cursor [MATCH pattern] [COUNT]

4.5 集合间操作

  • smove: SMOVE source destination member

  • sinter: SINTER key [key …]

  • sinterstore: SINTERSTORE destination key [key …]

  • sunion: SUNION key [key …]

  • sunionstore: SUNIONSTORE destination key [key …]

  • sdiff: SDIFF key [key …]

  • sdiffstore: SDIFFSTORE destination key [key …]

5. zset

有序集合嘛,就是有序,和集合相比之下多了一个分数。相当于是 集合 + hash表。

'score' 表示分数 查看数量 用 'card',指定区间数量用 'count'。 因为有序,有一个排序,所以就有倒序和顺序,用'rev' 区分。'lex'用在 分数一样,的有序集合中,其他集合使用,没啥意义。其他的一些,前面都介绍过了。

5.1 添加

  • zadd: ZADD key score member [[score member] [score member] …]

5.2 查询

  • zscore: ZSCORE key member

  • zcard: ZCARD key

  • zcount: ZCOUNT key min max

  • zrange: ZRANGE key start stop [WITHSCORES]

  • zrevrange: ZREVRANGE key start stop [WITHSCORES]

  • zrangebyscore: ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]

  • zrevrangebyscore: ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]

  • zrank: ZRANK key member

  • zrevrank: ZREVRANK key member

  • zrangebylex: ZRANGEBYLEX key min max [LIMIT offset count]

  • zlexcount: ZLEXCOUNT key min max

  • zscan: ZSCAN key cursor [MATCH pattern] [COUNT count]

5.3 修改

  • zincrby: ZINCRBY key increment member

5.4 删除

  • zrem: ZREM key member [member …]

  • zremrangebyrank: ZREMRANGEBYRANK key start stop

  • zremrangebyscore: ZREMRANGEBYSCORE key min max

  • zremrangelex: ZREMRANGEBYLEX key min max

5.5 集合间运算

  • zunionstore: ZUNIONSTORE destination numkeys key [key …] [WEIGHTS weight [weight …]] [AGGREGATE SUM|MIN|MAX]

  • zinterstore: ZINTERSTORE destination numkeys key [key …] [WEIGHTS weight [weight …]] [AGGREGATE SUM|MIN|MAX]

6. 总结

不行就查资料吧 链接 有一说一,这个还挺全的,这里因为是一些基础的东西,我也没有做太多的解释。 没有去考虑性能和一些实际的运用场景。 多半是给自己参考用一下。 自己总是需要重复查找一些资料。

现在把一些资料都放在自己的博客里面,可能好一点。

Redis 的 5 种数据类型的基本使用的更多相关文章

  1. Redis: Redis支持五种数据类型

    ylbtech-Redis: Redis支持五种数据类型 Redis支持五种数据类型:string(字符串) ,hash(哈希),list(列表),set(集合)及zset(sorted set:有序 ...

  2. 说一下redis中5种数据类型的底层数据结构

      前言: 阅读 redis设计与实现 一书的记录.未完待续... redis我们都知道有5种数据类型,分别是string,list,hash,set,zset,那么你知道它们的底层数据结构实现吗? ...

  3. 【快速掌握】Redis 的五种数据类型

    不同于MySQL的表结构所带来的复杂语句,Redis只需要维护好它的[key-value]结构就可以,因此相比于MySQL,语句非常简单. 今天介绍一下Redis 五种常用的数据类型: 这五种数据类型 ...

  4. Python操作Redis的5种数据类型

    1.连接redis(两种方式) # decode_responses=True: 解决获取的值类型是bytes字节问题 r = redis.Redis(host=', db=0, decode_res ...

  5. [Redis]Redis的五种数据类型与键值/服务器相关命令

    -------------------------------------------------------------------------------------- String(字符串):最 ...

  6. Redis的五种数据类型及方法

    字符串string: 字符串类型是Redis中最为基础的数据存储类型,是一个由字节组成的序列,他在Redis中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如JPEG图像数据货Json对象描 ...

  7. Redis的五种数据类型的简单介绍和使用

    1.准备工作: 1.1在Linux下安装Redis  https://www.cnblogs.com/dddyyy/p/9763098.html 1.2启动Redis 先把root/redis的red ...

  8. StackExchange.Redis学习笔记(二) Redis查询 五种数据类型的应用

    ConnectionMultiplexer ConnectionMultiplexer 是StackExchange.Redis的核心对象,用这个类的实例来进行Redis的一系列操作,对于一个整个应用 ...

  9. redis的五种数据类型及应用场景

    前言 redis是用键值对的形式来保存数据,键类型只能是String,但是值类型可以有String.List.Hash.Set.Sorted Set五种,来满足不同场景的特定需求. 本博客中的示例不是 ...

随机推荐

  1. 小智的旅行(Bridge)51nod 提高组试题

    luogu AC传送门(官方数据) 题目描述 小智最喜欢旅行了,这次,小智来到了一个岛屿众多的地方,有N座岛屿,编号为0到N-1,岛屿之间 由一些桥连接,可以从桥的任意一端到另一端,由于岛屿可能比较大 ...

  2. 安全性只是辅助效果?解读DevSecOps的核心动机

    DevSecOps背后的思想仅是对DevOps的扩展.就像开发人员以瀑布式开发风格将项目扔给运营团队以使其在生产中工作一样,即使使用“ DevOps”,安全性也与应用程序开发或运营完全分开. DevS ...

  3. Spring boot Sample 009之spring-boot-web-thymeleaf

    一.环境 1.1.Idea 2020.1 1.2.JDK 1.8 二.目的 spring boot 整合thymeleaf模板开发web项目 三.步骤 3.1.点击File -> New Pro ...

  4. MySQL国内镜像下载地址

    最近重新下载MySQL发现官网下载速度不是一般的慢,官网下载要几个钟而且一不注意就被取消下载了,实在受不了 可以使用sohu的镜像:http://mirrors.sohu.com/mysql/MySQ ...

  5. java方法句柄-----3.方法句柄的实现接口

    目录 1.使用方法句柄实现接口 1.使用方法句柄实现接口   2.3节介绍的动态代理机制可以在运行时为多个接口动态创建实现类,并拦截通过接口进行的方法调用.方法句柄也具备动态实现一个接口的能力.这是通 ...

  6. 数据库之 MySQL --- 数据处理 之 子查询 (二)

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 一 .数据库语言定义及命令行查看数据库操作 -- SQL 语言可以分为三类-- DML: 数据操纵语言. ...

  7. (一)用less+gulp+requireJs 搭建项目(了解less)

    项目完结 做个总结: 公司网站重构,整站都需要重写,终于有机会接触下 less,gulp和requireJs,因为以前的工作就是写几个活动页,并没有机会用这些工具,废话不多说,先看下完成后的项目目录: ...

  8. (Java实现)洛谷 P1093 奖学金

    题目描述 某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前5名学生发奖学金.期末,每个学生都有3门课的成绩:语文.数学.英语.先按总分从高到低排序,如果两个同学总分相同,再按语文成绩从高 ...

  9. Java实现 LeetCode 757 设置交集大小至少为2(排序+滑动窗口)

    757. 设置交集大小至少为2 一个整数区间 [a, b] ( a < b ) 代表着从 a 到 b 的所有连续整数,包括 a 和 b. 给你一组整数区间intervals,请找到一个最小的集合 ...

  10. 如何获取CSDN的积分?

    个人感觉就是写博客就给积分 具体给多少? CSDN应该有自己的积分规则 总之一句话:写博客涨积分