redis入门指南(二)—— 数据操作相关命令
写在前面
以下绝大部分内容取材于《redis入门指南》,部分结合个人知识,实践后得出。
只记录重要,明确,属于新知的相关内容,杜绝冗余和重复。
字符串
1、字符串类型是redis中最常见的类型,目前字符串数据的最大容量是512M。
2、取值、赋值
SET key value
GET key
当键值不存在时,返回nil
3、数字递增
INCR num
a、redis的键值不支持数字类型,当存储字符串是整数类型时,redis提供了递增命令,当数据类型不是整数时,会返回错误。
b、递增成功时会返回递增后的值,这个命令适合计数,当然用GET和SET 命令可以组合实现这个功能,但redis的所有命令都是原子操作,不会存在冲突,更加安全。
4、增加指定整数
INCRBY key num
返回值为递增后的值
5、减少整数
DECR key 整数递减,和递增命令对应
DECRBY key num 减少指定整数
6、增加指定浮点数
INCRBYFLOAT key num 向键值递增一个双精度浮点数
7、向尾部追加值
APPEND key string
当string包含空格等字符时,需要用引号包含字符串,redis-cli需要以此区分。
8、获取字符串长度
STRLEN key
redis可以存储二进制字符,存储中文时长度会取决于编码方式
9、同时获取/设置多个字符
MGET key [key ...]
MSET key value [key value ...]
MSET key1 v1 key2 v2 key3 v3
MGET key1 key2 key3
MSET key1 v1
10、位操作相关命令
GETBIT key offset 获取,这里的偏移量按位计算,从0开始,返回0或1
SETBIT key offset value 设置,返回值为设置前的值
BITCOUNT key [start] [end] 获取字符串中二进制位为1的个数
BITOP operation destkey key [key ...] 位运算
BITPOS key 1/0 [start] [end] 获取第一个二进制位位0或1的偏移量
a、GETBIT时,索引超过了字符串长度,返回0。
b、SETBIT时,索引超过了字符串长度,会将中间补足为0,同时,索引超出过多,会造成redis卡顿,浪费内存。
c、BITCOUNT 命令可以通过参数控制统计的范围,范围是以字节计的,而非位,并且以0开始。
d、位运算支持的操作有 AND、OR、XOR、NOT,且支持对多个键值同时位运算。
e、2.8.7版之后,加入BITPOS 命令,同时可按字节控制范围,但返回的偏移量的值是从头计算的,特别地,当不设置结束位置,且所有位为均为1,且查询0首次出现的位置时,会返回键值长度下一字节第一位的偏移量,这是因为redis会认为键值长度后的值都为0。
散列类型
11、一个散列类型键至多可以包含之多2^32-1个字段。
12、赋值、取值
HSET key field value
HGET key field
HMSET key field [field value ...]
HMGET key [field ...]
HGETALL key
13、判断字段是否存在
HEXISTS key field
存在返回1,否则返回0。
14、字段不存在时赋值
HSETNX key field value
与HSET类似,但它只在字段不存在时赋值。
15、增加指定整数
HINCRBY key field increment
如果字段不存在会自动建立,并初始化为0,之后增加,返回增加后的数。
16、删除字段
HDEL key field [field ...]
可以删除一个或多个字段,返回被删除的字段个数。
17、只获取字段名或字段值
HKEYS key
HVALS key
18、获取字段数量
HLEN key
列表类型
19、内部使用双向列表实现(各种操作的复杂度可想而知),一个列表类型键最多能容纳2^32-1个元素。
20、向列表两端增加元素
LPUSH key value [value ...]
RPUSH key value [value ...]
返回值表示增加后列表的元素数量
21、从列表两边弹出元素
LPOP key
RPOP key
将元素从列表中移除并返回,可配合使用构建成为栈或队列。
22、获取列表长度
LLEN key
23、获得列表片段
LRANGE key start end
当start和end都大于等于0时,左右均为闭区间,且start从0开始,当end大于列表长度时,依然会返回整个列表;当start和end均为负数时,可解释为返回倒数第start个到倒数第end个元素,所以次数end最大为-1;当start索引的位置在end后面时,将返回空列表。
24、删除列表中指定的值
LREM key count value
删除列表中count个值为value的元素,返回成功删除的元素个数。当count大于0时,会从列表左边开始删除;当count小于0时,会从列表右边开始删除;当count为0时,会删除所有值为value的元素。
25、获得/设置指定索引值的元素
LINDEX key index
LSET key index value
它们都支持负数作为索引
26、保留列表指定片段
LTRIM key start end
删除指定索引之外的所有元素,支持负数作为索引。
27、向列表中插入元素
LINSERT key BRFORE/AFTER pivot value
在列表中从左至右查找值为pivot的元素,再根据BEFOR或AFTER插入该元素之前还是之后,返回插入列表后的元素个数;当pivot不存在时返回-1。
28、将元素由一个列表转移到另一个
RPOPLPUSH source destination
将source列表右边弹出一个元素,插入到destination列表的左边,并返回这个值,整个过程为原子操作,当source和destination为同一个键时,会将队尾的元素移动到队首(一个可以随时插入的循环队列?)。
集合类型
29、集合中每个元素不同,且无序,最多可存储2^32-1个字符串,内部由值为空的散列表实现。
30、增加/删除元素
SADD key member [member ...]
SREM key member [member ...]
集合中的元素是不重复的,所以SADD虽然可以添加多个元素,对于已存在的元素会忽略,并返回成功添加的元素数量,SREM返回删除成功的个数。
31、获得集合中所有元素
SMEMBERS key
32、判断元素是否在集合中
SISMEMBER key number
33、集合间差集运算
SDIFF key [key ...]
用来计算两个及以上集合的差集,SDIFF A B 表示 A-B = {x | x∈A 且 x∈B}。当有多个集合时,按顺序计算出前两个的差集,再用结果与后面的集合继续运算。
34、集合间交集运算
SINTER key [key ...]
对多个集合执行交集运算
35、集合间并集运算
SUNION key [key ...]
对多个集合执行并集运算
36、获得集合中元素个数
SCARD key
37、进行集合运算并将结果存储
SDIFFSTORE destination key [key ...]
SINTERSTORE destination key [key ...]
SUNIONSTORE destination key [key ...]
38、随机获得集合中的元素
SRANDMEMBER key [count]
随机从集合中获得一个元素,还可以传递count参数获得多个元素。当count大于0时,会获取count个不重复的元素,当count大于集合元素总数时返回所有元素;当count小于0时,会随机获取-count个元素,这些元素有可能重复。
39、从集合中弹出一个元素
SPOP key
有序集合类型
40、有序集合使用跳表和散列表实现,并且可以调整某个元素在集合中的位置(通过修改这个元素的分数)。
41、增加元素
ZADD key score member [key member ...]
如果添加的元素已经存在,则会修改它的分数(这可能会导致这个元素的位置发生变化,也就是重排序),分数可以是整数,也可以是双精度浮点数,支持科学计数法表示,其中+inf和-inf分别表示正无穷和负无穷。
42、获得元素的分数
ZSCORE key member
43、获得排名在某个范围内的元素
ZRANGE key start end [WITHSCORES]
ZREVRANGE key start end [WITHSCORES]
同样支持负数索引,如果想要带上元素分数可以尾部追加WITHSCORES参数,如果两个元素分数相同,则会按照元素的字典顺序排列。以上两个命令区别在于前者按照从小到大的顺序给出结果,后者相反
44、获得指定分数范围的元素
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
ZREVRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
该命令按照元素从小到大顺序返回分数在min和max之间的元素,如果不想包含端点值,可以在分数前加上"("符号,分数支持正无穷和负无穷,WITHSCORES同样表示携带分数一起返回,LIMIT offset count表示在获得的元素基础上向后偏移offset个元素,并且只获取前offset个元素。以上两个命令区别同上。
45、增加某个元素的分数
ZINCRBY key increment member
increment可以是整数,小数,正数或负数,如果member不存在,则会先建立一个分数为0的member在执行操作,最后均返回更新后的分数。
46、获得集合中元素的数量
ZCARD key
47、获得指定分数范围内的元素个数
ZCOUNT key min max
48、删除一个或多个元素
ZREM key member [member ...]
返回成功删除的元素数量
49、按照排名范围删除元素
ZREMRANGEBYRANK key start end
返回成功删除的元素数量
50、按照分数范围删除元素
ZREMRANGEBYSCORE key min max
51、获得元素的排名
ZRANK key member
ZREVRANK key member
返回的排名从0开始,前者从小到大排序,后者从大到小。
52、计算有序集合的交集
ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]
该命令将计算多个有序集合的交集并存储到destination键中,并返回destination键中元素的数量。
destination键中元素的分数由AGGREGATE参数决定,当AGGREGATE为SUM(默认)时,destination键中元素的分数是每一个参与计算的有序集合中该元素的和;当AGGREGATE为MIN时,destination键中元素的分数是每一个参与计算的有序集合中该元素的最小值;AGGREGATE为时,destination键中元素的分数是每一个参与计算的有序集合中该元素的最大值。
WEIGHTS参数用来设置每个参与计算的有序集合的权重,每个集合中的元素在参与计算时都会被乘上该集合的权重。
53、计算有序集合的并集
ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]
用法同上
redis入门指南(二)—— 数据操作相关命令的更多相关文章
- Redis学习之二 数据类型和相关命令
原文:https://www.cnblogs.com/lonelyxmas/p/9073928.html 如果还不懂安装的,请看 Windows环境下安装Redis Redis一共支持五种数据类型 1 ...
- Redis入门指南之二(安装及配置)
本节主要内容 1. 前言2. redis安装3. 启动和停止Redis 1. 前言 安装Redis需要知道自己需要哪个版本,有针对性的安装,比如如果需要redis GEO这个地理集合的特性,那么red ...
- redis入门指南(三)—— 事务、过期时间、SORT命令、消息通知与管道
写在前面 学习<redis入门指南>笔记,结合实践,只记录重要,明确,属于新知的相关内容. 事务 1.redis中的事务由一组命令的集合组成,要么都执行,要么都不执行,同时redis的事务 ...
- redis入门指南(七)—— 安全、协议、管理工具及命令属性
写在前面 学习<redis入门指南>笔记,结合实践,只记录重要,明确,属于新知的相关内容. 安全 1.可以使用bind参数绑定一个地址,使redis只接受这个地址的连接. 2.使用requ ...
- Redis学习笔记(二)-key相关命令【转载】
转自 Redis学习笔记(二)-key相关命令 - 点解 - 博客园http://www.cnblogs.com/leny/p/5638764.html Redis支持的各种数据类型包括string, ...
- IDEA环境下GIT操作浅析之二-idea下分支操作相关命令
上次写到<idea下仓库初始化与文件提交涉及到的基本命令>,今天我们继续写IDEA环境下GIT操作之二--idea下分支操作相关命令以及分支创建与合并. 1.idea 下分支操作相关命令 ...
- redis入门指南(五)—— 复制与哨兵
写在前面 学习<redis入门指南>笔记,结合实践,只记录重要,明确,属于新知的相关内容. 一.复制 1.在复制中,数据库分为两类,一类主数据库,一类从数据库,主库用来读写,从库用来读,主 ...
- Redis入门指南之三(入门)
本节主要介绍Redis的5种数据类型,同时使用Python API来操作Redis,其中python版本为3.5, redis版本为4.0.2. redis-py 的API的使用可以分类为: (1)连 ...
- redis入门指南(四)—— redis如何节省空间
写在前面 学习<redis入门指南>笔记,结合实践,只记录重要,明确,属于新知的相关内容. 节省空间 1.redis对于它所支持的五种数据类型,每种都提供了两种及以上的编码方式去存储(具体 ...
随机推荐
- Java 第十一届 蓝桥杯 省模拟赛 正整数的摆动序列
正整数的摆动序列 问题描述 如果一个序列的奇数项都比前一项大,偶数项都比前一项小,则称为一个摆动序列.即 a[2i]<a[2i-1], a[2i+1]>a[2i]. 小明想知道,长度为 m ...
- Java实现 LeetCode 459 重复的子字符串
459. 重复的子字符串 给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成.给定的字符串只含有小写英文字母,并且长度不超过10000. 示例 1: 输入: "abab" ...
- Java实现 LeetCode 445 两数相加 II
445. 两数相加 II 给定两个非空链表来代表两个非负整数.数字最高位位于链表开始位置.它们的每个节点只存储单个数字.将这两数相加会返回一个新的链表. 你可以假设除了数字 0 之外,这两个数字都不会 ...
- Java实现蓝桥杯VIP 算法训练 sign函数
问题描述 给定实数x,输出sign(x)的值. sign(x)是符号函数,如果x>0,则返回1:如果x=0,则返回0:如果x<0,则返回-1. 输入格式 一行一个实数x. 输出格式 一行一 ...
- Java实现 LeetCode 215. 数组中的第K个最大元素
215. 数组中的第K个最大元素 在未排序的数组中找到第 k 个最大的元素.请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素. 示例 1: 输入: [3,2,1,5,6 ...
- Java实现字符串的包含
1 问题描述 给定一长字符串A和一短字符串B.请问,如何最快地判断出短字符串B中的所有字符是否都在长字符串A中?请编写一个判断函数实现此功能. 为简单起见,假设输入的字符串只包含小写英文字母.下面举几 ...
- mac下使用VMVARE安装win10虚拟机的一些坑
最近Mac上安装windows踩到了几个坑: 坑一:启动虚拟机后,提示找不到CD-ROM中找不到对应的ISO文件 硬盘格式请选择 在虚拟机->设置中选择启动磁盘为CD_ROM,然后重新启动. 坑 ...
- PyQt5入门教程
原文链接:https://blog.csdn.net/azuremouse/article/details/90338961 问题记录: 1. pip 安装时速度太慢, 需要使用国内镜像 pip in ...
- [每日一题2020.06.11]Codeforces Round #644 (Div. 3) H
A-E见 : 这里 题目 我觉得很有必要把H拿出来单独发( 其实是今天懒得写题了 ) problem H 一个从 1 到 $ 2^m - 1$ 的长度为m的连续二进制序列, 删去指定的n个数, 问剩余 ...
- 使用vuex中的store存储数据
Vuex是一个专门为Vue.js应用程序开发的状态管理模式,这个状态自管理应用包括三个模式 state 驱动应用的数据源 view 以声明方式将state映射到视图 actions 响应在view上的 ...