Redis 的 5 种数据类型的基本使用
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' 就是偏移。
'[]' 里面就是可有可无。'...' 就是可以有很多个。 '|' 就是多个挑一个,不能用其他的。
set:
SET key value [EX seconds] [PX milliseconds] [NX|XX]setnx:
SETNX key valuesetex:
SETEX key seconds valuepsetex:
PSETEX key milliseconds valuemset:
MSET key value [key value …]msetnx:
MSETNX key value [key value …]
1.2 查询系列
一个字符串有啥好查询的,无非就是 长度 和 值。 值就是包括全部,或者是其中的一部分字串。 所以这里就有 查值 查长度 查指定区间值。 为了减少多次 服务请求 就用 mget。
get:
GET keystrlen:
STRLEN keygetrange:
GETRANGE key start endmget:
MGET key [key …]
1.3 修改系列
修改就是, 添加到末尾, 或者修改指定位置的值。
append:
APPEND key valuesetrange:
SETRANGE key offset value
1.4 数值有关:
数值还有啥好说的, +1, -1, +n, -n, +float 记住 'incr' 是 + , 'decr' 是 -。 如果是指定值 就在后面补上 'by', 浮点数的话,再加一个 'float'
incr:
INCR keydecr:
DECR keyincrby:
INCRBY key incrementdecrby:
DECRBY key decrementincrbyfloat:
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 valuehsetnx:
HSETNX key field valuehmset:
HMSET key field value [field value …]
2.2 查询有关
查询值,判断是不是存在,看看字典长度,看看字段长度,批量查询。 看看全部的值,看看全部的字段,看看全部字段的值。扫描一下。
hget:
HGET key fieldhexists:
HEXISTS key fieldhlen:
HLEN keyhstrlen:
HSTRLEN key fieldhmget:
HMGET key field [field …]hvals:
HVALS keyhkeys:
HKEYS keyhgetall:
HGETALL keyhscan:
HSCAN key cursor [MATCH pattern] [COUNT count]
2.3 删除有关
删除,就是删除字段。 删除字典可以用万能删除大法。
- hdel:
HDEL key field [field …]
2.4 修改数值有关
数值修改的话, +n + float 就可以了,其他的,用 +(-n) 就okk 了
hincrby:
HINCRBY key field incrementhincrbyfloat:
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 keyrpop:
RPOP keylpushx:
LPUSHX key valuerpushx:
RPUSHX key valuerpoplpush:
RPOPLPUSH source destinationblpop:
BLPOP key [key …] timeoutbrpop:
BRPOP key [key …] timeoutbrpoplpush:
BRPOPLPUSH source destination timeout
3.2 删除
lrem:
LREM key count valueltrim:
LTRIM key start stop
3.3 查询
llen:
LLEN keylindex:
LINDEX key indexlrange:
LRANGE key start stop
3.4 修改和插入
lset:
LSET key index valuelinsert:
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 keysrem:
SREM key member [member …]
4.4 查询
srandmember:
SRANDMEMBER key [count]scard:
SCARD keysmembers:
SMEMBERS keysscan:
SSCAN key cursor [MATCH pattern] [COUNT]
4.5 集合间操作
smove:
SMOVE source destination membersinter:
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 memberzcard:
ZCARD keyzcount:
ZCOUNT key min maxzrange:
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 memberzrevrank:
ZREVRANK key memberzrangebylex:
ZRANGEBYLEX key min max [LIMIT offset count]zlexcount:
ZLEXCOUNT key min maxzscan:
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 stopzremrangebyscore:
ZREMRANGEBYSCORE key min maxzremrangelex:
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 种数据类型的基本使用的更多相关文章
- Redis: Redis支持五种数据类型
ylbtech-Redis: Redis支持五种数据类型 Redis支持五种数据类型:string(字符串) ,hash(哈希),list(列表),set(集合)及zset(sorted set:有序 ...
- 说一下redis中5种数据类型的底层数据结构
前言: 阅读 redis设计与实现 一书的记录.未完待续... redis我们都知道有5种数据类型,分别是string,list,hash,set,zset,那么你知道它们的底层数据结构实现吗? ...
- 【快速掌握】Redis 的五种数据类型
不同于MySQL的表结构所带来的复杂语句,Redis只需要维护好它的[key-value]结构就可以,因此相比于MySQL,语句非常简单. 今天介绍一下Redis 五种常用的数据类型: 这五种数据类型 ...
- Python操作Redis的5种数据类型
1.连接redis(两种方式) # decode_responses=True: 解决获取的值类型是bytes字节问题 r = redis.Redis(host=', db=0, decode_res ...
- [Redis]Redis的五种数据类型与键值/服务器相关命令
-------------------------------------------------------------------------------------- String(字符串):最 ...
- Redis的五种数据类型及方法
字符串string: 字符串类型是Redis中最为基础的数据存储类型,是一个由字节组成的序列,他在Redis中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如JPEG图像数据货Json对象描 ...
- Redis的五种数据类型的简单介绍和使用
1.准备工作: 1.1在Linux下安装Redis https://www.cnblogs.com/dddyyy/p/9763098.html 1.2启动Redis 先把root/redis的red ...
- StackExchange.Redis学习笔记(二) Redis查询 五种数据类型的应用
ConnectionMultiplexer ConnectionMultiplexer 是StackExchange.Redis的核心对象,用这个类的实例来进行Redis的一系列操作,对于一个整个应用 ...
- redis的五种数据类型及应用场景
前言 redis是用键值对的形式来保存数据,键类型只能是String,但是值类型可以有String.List.Hash.Set.Sorted Set五种,来满足不同场景的特定需求. 本博客中的示例不是 ...
随机推荐
- ATX-UI自动化环境搭建
基础环境准备(以下都是在Mac机上搭建的) 1.android sdk安装&配置 很完美的一个资源下载网:tools.android-studio.org,下载所需的包(我下的zip包直接解压 ...
- 关于VMware问题:无法获得 VMCI 驱动程序的版本: 句柄无效。驱动程序“vmci.sys”的版本不正确
有的童鞋可能安装虚拟机时出现了下边这样的错误,莫慌,下面咋们来解决!!! 1.首先,找到你的安装虚拟机的目录下有一个.vmx的文件 找到这个文件,用编辑器打开,将该值改为FALSE即可!
- 【数据结构的JavaScript版实现】data-struct-js的npm包初版作成
[数据结构的JavaScript版实现]data-struct-js的npm包初版作成 码路工人 CoderMonkey [数据结构的JavaScript版实现] 拖了这么久,终于趁着春节假期把初版( ...
- 前端星计划笔记-day1
前端 功能,美观,安全,无障碍,性能,兼容,体验 前端编程思想 WA doctype: 文档版本 浏览器决定渲染模式 语义化: 所有的标签都有自己的含义,属性 可读性 前端规范 whatwg css显 ...
- NIO 的非阻塞式网络通信
1.阻塞与非阻塞 ① 传统的 IO 流都是阻塞式的.也就是说,当一个线程调用 read() 或 write()时, 该线程被阻塞,直到有一些数据被读取或写入,该线程在此期间不能执行其他任务. 因 ...
- xxshenqi分析报告
背景 今年七夕爆发了一场大规模手机病毒传播,apk的名字叫做xxshenqi.中了这个病毒的用户会群发手机所有联系人一条信息,内容是包含这个apk下载的链接,同时用户的联系人信息和短信会被窃取,造成隐 ...
- leetcode976之三角形最大周长
题目描述: 给定由一些正数(代表长度)组成的数组 A,返回由其中三个长度组成的.面积不为零的三角形的最大周长. 如果不能形成任何面积不为零的三角形,返回 0. def largePara(A): A. ...
- winxp无法访问win10教育版共享资源的问题处理
一.问题来源: dell5460笔记本上一个winxp系统虚拟机,访问一台lenovoT470笔记本win10教育版系统上的共享资源(使用命令行方式:net use s: \\172.18.45.10 ...
- ES6-常用四种数组
1.map 1.1 个人理解 映射 一个对一个 例如:[45,57,138]与[{name:'blue',level:0},{name:'zhangsan',level:99},{name:'lisi ...
- jQuery-DOM增删查改
1.绑定事件 $().事件名(function(){功能}) 事件名:鼠标事件 键盘事件 表单事件 事件委托:$().on('事件名',#####'target',function(){功能}) 额外 ...