写在前面

  以下绝大部分内容取材于《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 第十一届 蓝桥杯 省模拟赛 正整数的摆动序列

    正整数的摆动序列 问题描述 如果一个序列的奇数项都比前一项大,偶数项都比前一项小,则称为一个摆动序列.即 a[2i]<a[2i-1], a[2i+1]>a[2i]. 小明想知道,长度为 m ...

  2. Java实现 LeetCode 459 重复的子字符串

    459. 重复的子字符串 给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成.给定的字符串只含有小写英文字母,并且长度不超过10000. 示例 1: 输入: "abab" ...

  3. Java实现 LeetCode 445 两数相加 II

    445. 两数相加 II 给定两个非空链表来代表两个非负整数.数字最高位位于链表开始位置.它们的每个节点只存储单个数字.将这两数相加会返回一个新的链表. 你可以假设除了数字 0 之外,这两个数字都不会 ...

  4. Java实现蓝桥杯VIP 算法训练 sign函数

    问题描述 给定实数x,输出sign(x)的值. sign(x)是符号函数,如果x>0,则返回1:如果x=0,则返回0:如果x<0,则返回-1. 输入格式 一行一个实数x. 输出格式 一行一 ...

  5. Java实现 LeetCode 215. 数组中的第K个最大元素

    215. 数组中的第K个最大元素 在未排序的数组中找到第 k 个最大的元素.请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素. 示例 1: 输入: [3,2,1,5,6 ...

  6. Java实现字符串的包含

    1 问题描述 给定一长字符串A和一短字符串B.请问,如何最快地判断出短字符串B中的所有字符是否都在长字符串A中?请编写一个判断函数实现此功能. 为简单起见,假设输入的字符串只包含小写英文字母.下面举几 ...

  7. mac下使用VMVARE安装win10虚拟机的一些坑

    最近Mac上安装windows踩到了几个坑: 坑一:启动虚拟机后,提示找不到CD-ROM中找不到对应的ISO文件 硬盘格式请选择 在虚拟机->设置中选择启动磁盘为CD_ROM,然后重新启动. 坑 ...

  8. PyQt5入门教程

    原文链接:https://blog.csdn.net/azuremouse/article/details/90338961 问题记录: 1. pip 安装时速度太慢, 需要使用国内镜像 pip in ...

  9. [每日一题2020.06.11]Codeforces Round #644 (Div. 3) H

    A-E见 : 这里 题目 我觉得很有必要把H拿出来单独发( 其实是今天懒得写题了 ) problem H 一个从 1 到 $ 2^m - 1$ 的长度为m的连续二进制序列, 删去指定的n个数, 问剩余 ...

  10. 使用vuex中的store存储数据

    Vuex是一个专门为Vue.js应用程序开发的状态管理模式,这个状态自管理应用包括三个模式 state 驱动应用的数据源 view 以声明方式将state映射到视图 actions 响应在view上的 ...