写在前面

  以下绝大部分内容取材于《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、位运算支持的操作有 ANDORXORNOT,且支持对多个键值同时位运算。

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入门指南(二)—— 数据操作相关命令的更多相关文章

  1. Redis学习之二 数据类型和相关命令

    原文:https://www.cnblogs.com/lonelyxmas/p/9073928.html 如果还不懂安装的,请看 Windows环境下安装Redis Redis一共支持五种数据类型 1 ...

  2. Redis入门指南之二(安装及配置)

    本节主要内容 1. 前言2. redis安装3. 启动和停止Redis 1. 前言 安装Redis需要知道自己需要哪个版本,有针对性的安装,比如如果需要redis GEO这个地理集合的特性,那么red ...

  3. redis入门指南(三)—— 事务、过期时间、SORT命令、消息通知与管道

    写在前面 学习<redis入门指南>笔记,结合实践,只记录重要,明确,属于新知的相关内容. 事务 1.redis中的事务由一组命令的集合组成,要么都执行,要么都不执行,同时redis的事务 ...

  4. redis入门指南(七)—— 安全、协议、管理工具及命令属性

    写在前面 学习<redis入门指南>笔记,结合实践,只记录重要,明确,属于新知的相关内容. 安全 1.可以使用bind参数绑定一个地址,使redis只接受这个地址的连接. 2.使用requ ...

  5. Redis学习笔记(二)-key相关命令【转载】

    转自 Redis学习笔记(二)-key相关命令 - 点解 - 博客园http://www.cnblogs.com/leny/p/5638764.html Redis支持的各种数据类型包括string, ...

  6. IDEA环境下GIT操作浅析之二-idea下分支操作相关命令

    上次写到<idea下仓库初始化与文件提交涉及到的基本命令>,今天我们继续写IDEA环境下GIT操作之二--idea下分支操作相关命令以及分支创建与合并. 1.idea 下分支操作相关命令 ...

  7. redis入门指南(五)—— 复制与哨兵

    写在前面 学习<redis入门指南>笔记,结合实践,只记录重要,明确,属于新知的相关内容. 一.复制 1.在复制中,数据库分为两类,一类主数据库,一类从数据库,主库用来读写,从库用来读,主 ...

  8. Redis入门指南之三(入门)

    本节主要介绍Redis的5种数据类型,同时使用Python API来操作Redis,其中python版本为3.5, redis版本为4.0.2. redis-py 的API的使用可以分类为: (1)连 ...

  9. redis入门指南(四)—— redis如何节省空间

    写在前面 学习<redis入门指南>笔记,结合实践,只记录重要,明确,属于新知的相关内容. 节省空间 1.redis对于它所支持的五种数据类型,每种都提供了两种及以上的编码方式去存储(具体 ...

随机推荐

  1. Java 第十一届 蓝桥杯 省模拟赛 小明的城堡

    小明用积木搭了一个城堡. 为了方便,小明在搭的时候用的是一样大小的正方体积本,搭在了一个 n 行 m 列的方格图上,每个积木正好占据方格图的一个小方格. 当然,小明的城堡并不是平面的,而是立体的.小明 ...

  2. Java实现 LeetCode 132 分割回文串 II(二)

    132. 分割回文串 II 给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串. 返回符合要求的最少分割次数. 示例: 输入: "aab" 输出: 1 解释: 进行一 ...

  3. Java中Collections类详细用法

    1.sort(Collection)方法的使用(含义:对集合进行排序). 例:对已知集合c进行排序? public class Practice { public static void main(S ...

  4. java算法集训结果填空题练习2

    1 欧拉与鸡蛋 大数学家欧拉在集市上遇到了本村的两个农妇,每人跨着个空篮子.她们和欧拉打招呼说两人刚刚卖完了所有的鸡蛋. 欧拉随便问:"卖了多少鸡蛋呢?" 不料一个说:" ...

  5. Java实现 泊松分酒

    泊松是法国数学家.物理学家和力学家.他一生致力科学事业,成果颇多.有许多著名的公式定理以他的名字命名,比如概率论中著名的泊松分布. 有一次闲暇时,他提出过一个有趣的问题,后称为:"泊松分酒& ...

  6. java实现第六届蓝桥杯奇妙的数字

    奇妙的数字 奇妙的数字 小明发现了一个奇妙的数字.它的平方和立方正好把0~9的10个数字每个用且只用了一次. 你能猜出这个数字是多少吗? 请填写该数字,不要填写任何多余的内容. 结果:69 impor ...

  7. PAT 科学计数法

    科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [+-][1-9].[0-9]+E[+-][0-9]+,即数字的整数部分只有 1 位,小数部分至少有 1 位,该数字及其指 ...

  8. Jmeter环境部署

    一.安装jdk 下载jdk 双击jdk-8u211-windows-x64.exe,默认下一步安装 我的电脑-属性-高级系统设置-环境变量 在“系统变量”出,新建”JAVA_HOME”,配置jdk的安 ...

  9. PHP源码进行加密(仅linux)

    加密软件(php_screw) 1.下载网站:http://sourceforge.net/projects/php-screw/ 2.描述: php文件通常以文本格式存贮在服务器端, 很容易被别人读 ...

  10. MySQL数据库基础知识复习

    现在是2020年寒假,这也是新年写的第一篇博客,用了十几天的时间自学了数据库基础部分,想总结一下得失同时并通过写博客来复习前面学的知识点. 个人: 1.本来是计划一周学完基础部分的178p但没能完成这 ...