目录

Redis 基本(basic)命令

Redis 键(key)命令

Redis 数据类型概述

Redis 字符串(String)

Redis 哈希(Hash)

Redis 列表(List)

Redis 集合(Set)

Redis 有序集合(sorted set)


Redis 基本(basic)命令

1、Redis 命令用于在 redis 服务上执行操作,要在 redis 服务上执行命令需要一个 redis 客户端。安装目录下的 redis-cli 就是自带的测试客户端。

命令行启动自带的 redis-cli 客户端连接到本地的 redis 服务:redis-cli

连接远程 redis 服务器:redis-cli -h host -p port -a password

PING用于检测 redis 服务是否启动,连接是否正常,连接成功时返回 PONG
select indexRedis Select 命令用于切换到指定的数据库,数据库索引号 index 用数字值指定,以 0 作为起始索引值。
exit退出 redis-cli 
auth password当 redis 服务器开启密码验证,客户端连接时没有指定密码时,连接后必须使用 "auth 密码" 先进行授权,否则其它命令会使用不了。
keys *查询 redis 数据库中的所有 key 值
del key删除指定的 key 的内容
quit关闭与当前客户端与redis服务的连接
Dbsize命令用于返回当前数据库的 key 的数量
Info返回关于 Redis 服务器的各种信息和统计数值。
Flushdb用于清空当前数据库中的所有 key
Flushall删除所有数据库的所有key

Redis 键(key)命令

1、Redis 键命令用于管理 redis 的键。

2、Redis 键命令的基本语法:command KEY_NAME

序号命令描述
1del key

删除指定的 key。key 不存在时不影响。可以同时删除多个,如 del key1 key2 ...。list、set、zset、hash 中的元素全部删除后,key 也会自动被删除。

2dump key序列化给定 key ,并返回被序列化的值。
3exists key检查给定 key 是否存在。返回 1 表示存在,返回 0 表示不存在。
4expire key seconds为给定 key 设置过期时间。单位 秒。如果 key 后续被重新设置值,比如 set key value,则 key 过期时间失效。
5expireat key timestampEXPIREAT 的作用和 EXPIRE 类似,都用于为 key 设置过期时间。 不同在于 EXPIREAT 命令接受的时间参数是 UNIX 时间戳(unix timestamp)。如果 key 后续被重新设置值,比如 set key value,则 key 过期时间失效。
6pexpire key milliseconds设置 key 的过期时间亿以毫秒计。如果 key 后续被重新设置值,比如 set key value,则 key 过期时间失效。
7pexpireat key milliseconds-timestamp 设置 key 过期时间的时间戳(unix timestamp) 以毫秒计。如果 key 后续被重新设置值,比如 set key value,则 key 过期时间失效。
8keys pattern 查找所有符合给定模式( pattern)的 key 。* 表示1个或多个,? 表示一个任意字符。keys * :查找所有key,keys user*:查找以 user 开头的 key,keys ag?:查找 ag 开头,且后面只有一个字符的 key。
9move key db将当前数据库的 key 移动到给定的数据库 db 当中。
10persist key移除 key 的过期时间,key 将持久保持。
11pttl key以毫秒为单位返回 key 的剩余的过期时间。如果没有对 key 设置超时,则返回 -1;-1 表示超时不存在。正常情况返回大于0的正数。
12ttl key以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)。
13randomkey 从当前数据库中随机返回一个 key 。
14rename key newkey修改 key 的名称。key 不存在时会报错:(error) ERR no such key。如果 newkey 已经存在时,则会删除旧值。
15renamenx key newkey仅当 newkey 不存在时,将 key 改名为 newkey 。key 不存在时报错。
16type key返回 key 所储存的值的类型。有 string、list、set、zset、hash。如果 key 不存在,则返回 none

在线命令演示源码:Redis 基本命令、键(key)命令、数据类型概述.sql

Redis 数据类型概述

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

2、这里暂时先做个概述,后续会详细说明。

3、在线命令演示源码Redis 基本命令、键(key)命令、数据类型概述.sql

Redis 字符串(String)

1、string 是 redis最基本的类型,一个key对应一个value。一个键最大能存储512MB。

2、string 类型是二进制安全的,可以包含任何数据,比如 jpg 图片或者序列化的对象 。

3、Redis 字符串(String)官网文档Redis SET 命令_设置指定 key 的值

序号命令描述
1set key value 设置指定 key 的值。key 存在时,覆盖其值。总是返回ok。设置的数字会自动转为字符串存储
set key value EX 失效时间设置 key 的值 value,同时设置失效时间(单位秒)。比如 SET hello "springdoc.cn" EX 10。
2get key获取指定 key 的值。如果 key 不存在,则返回 (nil) 相当于 null。如果 key 的类型不是 string ,则报错。
3getrange key start endrange:范围、界限。返回 key 中字符串值的子字符。索引 [start ,end] 从 0开始。可以为负数,如 -1表示倒数第一位,-2 表示倒数第二位。
4getset key value将给定 key 的值设为 value ,并返回 key 的旧值(old value)。key 不存在时返回为(nil),同时创建新值。
5getbit key offset对 key 所储存的字符串值,获取指定偏移量上的位(bit)。
6mget key1 [key2..]获取所有(一个或多个)给定 key 的值。不存在的 key 返回 (nil)
7setbit key offset value对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)。
8setex key seconds value将值 value 关联到 key ,并将 key 的过期时间设为 seconds (以秒为单位)。
9setnx key value 只有在 key 不存在时设置 key 的值。
10setrange key offset value 用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始。
11strlen key 返回 key 所储存的字符串值的长度。不存在的 key 返回 0
12mset key value [key value ...]同时设置一个或多个 key-value 对。key 存在时,覆盖其值。
13msetnx key value [key value ...]同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在才设置。
14psetex key milliseconds value这个命令和 SETEX 命令相似,但它以毫秒为单位设置 key 的生存时间,而不是像 SETEX 命令那样,以秒为单位。
15incr key

 将 key 中储存的数字值增一。increment:ˈɪŋkrəmənt 增量、增加。如果不是数值,则报错。

如果 key 不存在,则新建,incr 后,值为1。

16incrby key increment 将 key 所储存的值加上给定的增量值(increment) 。如果不是数值,则报错。如果 key 不存在,则新建。
17incrbyfloat key increment 将 key 所储存的值加上给定的浮点增量值(increment) 。如果不是数值,则报错。如果 key 不存在,则新建。increment 不能是变量。
18decr key将 key 中储存的数字值减一。如果不是数值,则报错。如果 key 不存在,则新建,decr 后,值为 -1。如果 key 不存在,则新建。
19decrby key decrementkey 所储存的值减去给定的减量值(decrement) 。如果 key 不存在,则新建。increment 
20append key value

如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾。

如果 key 不存在,则新建。value 不能是变量。

4、在线命令演示:Redis 字符串(String)命令演示.sql

Redis 哈希(Hash)

1、Redis hash 是一个键值对集合,值可以看成一个 Map。

2、Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。

3、每个 hash 可以存储 40多亿键值对。

hmset key filed value [filed2 value2 filed3 value3 ...]:同时为 key 指定多个 filed 与 value

hgetall key:获取 key 中的所有 filed-value

4、Redis 哈希(Hash)官网文档Redis Hdel 命令_删除一个或多个哈希表字段

序号命令描述
1hdel key field2 [field2]删除一个或多个哈希表字段。返回值成功删除的个数。key 或 field 不存在时会自动忽略。
2hexists key field查看哈希表 key 中,指定的字段是否存在。返回1表示有,返回0表示没有。key 不存在时也返回0.
3hget key field获取存储在哈希表中指定字段的值。key 或 field 不存在时,返回 (nil)。
4hgetall key获取在哈希表中指定 key 的所有字段和值
5hincrby key field increment为哈希表 key 中的指定字段的整数值加上增量 increment 。field 必须是数值,否则报错。key 不存在时会自动新建。field 不存在时也会自动新建。
6hincrbyfloat key field increment为哈希表 key 中的指定字段的浮点数值加上增量 increment 。field 必须是数值,否则报错。key 不存在时会自动新建。field 不存在时也会自动新建。
7hkeys key获取所有哈希表中的字段
8hlen key获取哈希表中字段的数量。key 不存在时返回0.
9hmget key field1 [field2]获取所有给定字段的值。key 或 field 不存在时,返回 (nil)。
10hmset key field1 value1 [field2 value2 ]同时将多个 field-value (域-值)对设置到哈希表 key 中。field 存在时,覆盖 value。
11hset key field value将哈希表 key 中的字段 field 的值设为 value 。field 存在时,覆盖 value。
12hsetnx key field value只有在字段 field 不存在时,设置哈希表字段的值。
13hvals key获取哈希表中所有值
14HSCAN key cursor [MATCH pattern] [COUNT count]迭代哈希表中的键值对。

5、命令在线演示:Redis 哈希(Hash)命令演示.sql

Redis 列表(List)

1、Redis 列表是简单的字符串列表,按照插入顺序排序,可以添加一个元素导列表的头部(左边)或者尾部(右边)。

2、每个列表最多可存储 4294967295 个元素(约40多亿)

lpush key value1 value2 value3 ...:在指定的 key 关联的 lsit 的头部插入所有的 value,如果 key 不存在,则会先创建一个与该  key 关联的空链表,之后向链表的头部插入数据,插入成功,返回插入的个数。

lrange key start end:获取链表中 [start,end] 之间的元素值,从0开始计数。可以为负数,如 -1 表示链表尾部的元素,-2 表示倒数第二个。

3、Redis 列表(List)官网文档Redis Blpop 命令_移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

序号命令描述
1blpop key1 [key2 ] timeout移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
2brpop key1 [key2 ] timeout移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
3brpoplpush  source destination timeout从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
4lindex key index通过索引获取列表中的元素
5linsert key BEFORE|AFTER pivot value在 pivot 元素前/后插入 value 元素。成功时返回列表中元素的个数。key 不存在时返回0。pivot 不存在时返回-1。 
6llen key获取列表长度。key 不存在时返回0;
7lpop key返回并弹出指定 key 关联的列表中的第一个元素(头部元素)。如果 key 不存在,则返回(nil)。弹出之后,列表中的此元素也就不存在了。
8lpush key value1 [value2]将一个或多个值插入到列表头部。如果 key 不存在,则先创建一个与该 key 关联的空列表,然后向列表的头部插入数据,返回插入成功的个数。因为有索引,所以可以插入重复的元素。返回 list 中的元素个数。
9lpushx  key value将一个或多个值插入到已存在的列表头部
10lrange key start stop获取链表中 [start,end] 之间的元素值。索引从0开始,可以为负数,如 -1 表示倒数第一个元素,-2 表示倒数第二个元素...。end 可以超出列表的整个大小,此时多余的会自动忽略。
11lrem key count value删除 count 个值为 value 的元素。count > 0,则从头向尾遍历并删除 count 个值为 value 的元素,count < 0 ,则从尾向前遍历进行删除。count =0,则删除链表中所有的 value 元素。返回删除成功的个数。value 不存在时返回0。key 不存在时返回0。
12lset key index value设置列表中索引为 index 的元素值,0 表示首元素,-1表示尾元素。如果 index 不存在,则抛出异常。如果 key 不存在,也抛出异常。
13ltrim key start stop对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。
14rpop key移除并获取列表最后一个元素
15rpoplpush source destination将 resource 链表的尾部元素弹出并添加到 destination 链表的头部。成功时返回操作的元素。如果resource不存在,则返回(nil)。如果 destination 不存在,则自动会新建。
16rpush key value1 [value2]在列表尾部添加一个或多个值
17rpushx key value为已存在的列表的尾部添加值

rpoplpush 使用场景:

    Redis 链表经常会被用于消息队列的服务,已完成多程序之间的消息交互。
    假设一个应用程序正在执行 lpush 操作向链表头部插入新的元素,通常将这样的程序称之为"生产者(Producer)",
    而另一个应用程序正在执行 rpop 操作从链表的尾部取出元素,通常称之为"消费者(Consumer)"。
    如果此时消费者程序取出消息后突然崩溃了,由于该消息已经被取出且没有被正常处理,那么就认为此消息已经丢失,由此可能导致业务数据丢失。
    然而通过 rpoplpush 命令,消费者程序在主消息队列中取出消息之后再将其插入到备份队列中,直到消费者程序完成正常的处理后,再将该消息从备份列表中删除。
    同时还可以提供一个守护进程,当发现备份队列中的消息过期时,可以重新将其再放回到主消息队列中,以便其它消费者程序继续处理。

Redis 集合(Set)

1、Redis 的 Set 是 string 类型的无序集合。和 java 一样,集合中不会有重复的元素。

2、集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。

3、每个集合中最大的成员数为  4294967295(40多亿个成员)。

sadd key value1 value2 ...:向集合 key 中添加元素,key 不存在时会自动新建,value 存在时,后一次的会被忽略。

smembers key:获取集合 key 中的所有元素。

4、Redis 集合(Set)官网文档Redis Sadd 命令_向集合添加一个或多个成员

序号命令描述
1sadd key member1 [member2]向集合添加一个或多个成员。如果 value 已经存在,则不会再添加。返回插入成功的个数。
2scard key获取集合的成员数。key 不存在时,返回0。
3sdiff key1 [key2]返回给定所有集合的差集。求 key1 与 key2 key3 ...的差集,即 key1 中有,但 key2 key3 ...都没有的元素。
4sdiffstore destination key1 [key2]将 key1 集合与其它集合的差集放入到 destination 集合中。如果 destination 已经存在且有值,则会被全部清除,不存在时会新建。
5sinter key1 [key2]返回给定所有集合的交集。求 key1 与 key2 key3 ...集合的交集。
6sinterstore destination key1 [key2]将 key1 与其它集合的交集存放到 destination 集合中。如果 destination 集合已经有值,则会先被清理。
7sismember key member判断 member 元素是否是集合 key 的成员。返回1表示存在,返回0表示不存在。key 不存在时也返回0。
8smembers key返回集合中的所有成员
9smove source destination member将 member 元素从 source 集合移动到 destination 集合
10spop key移除并返回集合中的一个随机元素
11srandmember key [count]返回集合中一个或多个随机数。key 不存在时返回(nil)
12srem key member1 [member2]移除集合中一个或多个成员。返回成功删除的个数。
当然也可以使用 del key 直接删除整个集合。
13sunion key1 [key2] ...返回所有给定集合的并集。求 key1 与集合 key2 key3 ...的并集。
14sunionstore destination key1 [key2] ...所有给定集合的并集存储在 destination 集合中。将并集结果存放到 destination 集合中。如果 destination 已经有值,则会被清除。
15sscan key cursor [MATCH pattern] [COUNT count]迭代集合中的元素

Redis 有序集合(sorted set)

1、Redis zset 和 set 一样也是 string 类型元素的集合,且不允许重复的成员。

2、不同的是每个元素都会关联一个 double 类型的分数,redis 正是通过分数来为集合中的成员进行从小到大的排序。

3、zset 的成员是唯一的,但分数(score)却可以重复。

zadd key score1 member1 score2 member2 ...:添加元素到集合,元素在集合中存在则更新对应 score:

zrangebyscore key min max :返回分数在 [mix,max]之间的成员,并按照分数由低到高排序。

4、Redis 有序集合(sorted set)官网文档Redis Zadd 命令_向有序集合添加一个或多个成员,或者更新已存在成员的分数

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐