Redis の一般的なコマンドと 5 つの主要なデータ型

目次

Redis の 5 つの主要なデータ型

Redis 文字列 (文字列) コマンド

Redis ハッシュ (Hash) コマンド

Redis リスト (リスト) コマンド

Redis set (セット) コマンド

Redis 順序付きセット (ソート済みセット) コマンド

Redis HyperLogLog コマンド

Redis のパブリッシュおよびサブスクライブのコマンド

Redisトランザクションコマンド

Redis キーコマンド


Redis の 5 つの主要なデータ型

Redis 文字列 (文字列) コマンド

String: 任意の形式の文字列を格納できる文字列型

注文 説明
Redis Setnx コマンド キーが存在しない場合にのみ、キーの値を設定します。setnx name zhangsan はキー値を設定します。このキーが存在する場合は 0 を返し、上書きしません。それ以外の場合は通常どおりに設定されます
Redis Getrange コマンド キーの文字列値のサブ文字を返します。指定された範囲値を取得します。start (0 から開始) end (0 から開始) set name zhangsan getrange name 2 5 -- 範囲値を取得し、最後に 'angs' を返します。
Redis Mset コマンド 1 つ以上のキーと値のペアを同時に設定します。mset name zhangsn age 22 address anhui -- 名前、年齢、住所をバッチで設定します
Redis Setex コマンド 値 value をキーに関連付け、キーの有効期限を秒 (秒単位) に設定します。setex name 60 zhangsan -- キーを name に設定し、有効期限を 60 秒に設定します
Redis SETコマンド 指定されたキーセット名の値を設定します。zhangsan は文字列型のキー値を設定します。キーがすでに値を保存している場合、この操作は元の値を直接上書きし、元の型を無視します。
Redis Getコマンド 指定されたキーの値を取得します。キー key が存在しない場合は特別な値 nil を返し、それ以外の場合はキー key の値を返します。get name -- name キーの値を取得します。
Redis Getbit コマンド キーによって保存された文字列値については、指定されたオフセットにあるビットを取得します。
Redis Setbit コマンド キーによって保存された文字列値の場合、指定されたオフセットのビットをセットまたはクリアします。
Redis Decrコマンド keyに格納されている数値を1つデクリメントします。年齢をデクトし、減算した値を返します (整数の場合のみ、文字列はエラーを報告します)
Redis Decrby コマンド キーによって保存された値から指定された減分を差し引いた値。decrby age 11キーに格納されているデジタル値を指定されたステップ サイズの増分だけ減少させ、減少した値を返します (整数の場合のみ、文字列はエラーを報告します)
Redis strlen コマンド キーによって格納された文字列値の長さを返します。ストレン名
Redis Msetnx コマンド また、指定されたキーが存在しない場合にのみ、1 つ以上のキーと値のペアを設定します。msetnx name zhangsan age 22 -- 名前と年齢の 2 つのキー値を設定します
Redis Incrby コマンド key に格納されている値を、指定された増分値 (increment) に加算します。lncrby age 11説明: キーに格納されているデジタル値を指定されたステップ サイズ 11 だけ増加させ、増加した値を返します (整数の場合のみ、文字列はエラーを報告します)
Redis Incrbyfloat コマンド key によって格納された値を、指定された浮動小数点増分値 (increment) に加算します。lncrbyfloat給与 333.33 -- 給与にステップサイズ 333.33 を追加します。
Redis Setrange コマンド 指定されたキーに格納されている文字列値を、オフセット offset から始まる value パラメーターで上書きします。set name zhangsan -- 元のキー値を作成setrange name 5 ' yu xiao' -- 元の zhangsan の 5 桁目以降 (添え字 0) を変更し、最後に "zhang yu xiao" に変更します。
Redis Psetex コマンド このコマンドは SETEX コマンドに似ていますが、キーの有効期間を SETEX コマンドのような秒単位ではなくミリ秒単位で設定します。psetex name 70000 zhangsan -- キーを name に設定し、有効期限を 70 秒に設定します
Redis 追加コマンド キーがすでに存在し、文字列である場合、APPEND コマンドはキーの元の値の末尾に値を追加します。名前「Good Good Boy」を追加すると、 zhangsangood Good body が返されます
Redis Getset コマンド 指定されたキーの値を value に設定し、キーの古い値を返します。
Redis Mget コマンド 指定されたキーのすべての (1 つ以上の) 値を取得します。mget name aaa -- name と aaa の値をバッチで取得します (aaa キーが存在しない場合は nil を返します)
Redis 増加コマンド keyに格納されている数値を1つインクリメントします。そして増加した値を返します (整数の場合のみ、文字列はエラーを報告します) incr age
ゲデル getdel キーの説明: 最初に指定されたキーを取得し、次に取得したキーを削除し、最後に削除された値を返します。
ゲテックス getex key は指定されたキー値を取得します。取得後、現在のキーのタイムアウト時間を設定またはクリアできます。 ex 秒: キーの有効期限を秒単位で設定します。 px ミリ秒: キーの有効期限を設定します。ミリ秒単位 exat timestamp: キーの有効期限が切れる指定の Unix 時間を秒単位で設定します pxat milliseconds-timestamp: キーの有効期限が切れる指定の Unix 時間をミリ秒で設定しますpersist: タイムアウトをクリアします

Redis ハッシュ (Hash) コマンド

ハッシュ: ハッシュ タイプ。Java の Map と同様、オブジェクトの保存に適しています。

注文 説明
Redis Hmset コマンド 複数のフィールドと値 (ドメインと値) のペアを同時にハッシュ テーブル キーに設定します。hmset ユーザー名 zhangsan 年齢 18
Redis Hmget コマンド 指定されたすべてのフィールドの値を取得しますが、一度に複数のフィールド値を返すこともできます hmget ユーザー名 年齢
Redis Hsetコマンド ハッシュ テーブル キーのフィールド field の値を value に設定します。hset user name zhangsan age 18 キーを user に設定しますが、その中に名前と年齢のフィールドを保存します
Redis Hgetall コマンド ハッシュテーブル内の指定されたキーのすべてのフィールドと値を取得します。hgetall-user
Redis Hget 命令 获取存储在哈希表中指定字段的值/td> hget user name
Redis Hexists 命令 查看哈希表 key 中,指定的字段是否存在。 hexists user name存在 返回1,不存在返回0
Redis Hincrby 命令 为哈希表 key 中的指定字段的整数值加上增量 increment 。hincrby user age 20,返回38
Redis Hlen 命令 获取哈希表中字段的数量 hlen user 返回2:字段数量
Redis Hdel 命令 删除一个或多个哈希表字段 hdel user name
Redis Hvals 命令 获取哈希表中所有值 hvals user
Redis Hincrbyfloat 命令 为哈希表 key 中的指定字段的浮点数值加上增量 increment 。 hincrbyflost user age 10.2
Redis Hkeys 命令 获取所有哈希表中的字段 hkeys user,返回key
Redis Hsetnx 命令 只有在字段 field 不存在时,设置哈希表字段的值。 hsetnx user name zhangsan 存在返回0不能更改,如果当前field存在则添加失败(不可覆盖添加)
hstrlen hstrlen key field 说明:返回存储在key中给定field相关联的值的字符串长度(string length)
hrandfield hrandfield key [count [withvalues]] 随机返回key里的field字段 count:返回的field个数 hrandfield user 2

Redis 列表(List) 命令

List:列表类型,可以存储一个有序的字符串列表。

命令 描述
Redis Lindex 命令 通过索引获取列表中的元素 lindex list 0
Redis Rpush 命令 在列表中右边添加一个或多个值 rpush list a b c d e
Redis Lrange 命令 获取列表指定下标范围内的元素 lrange list 0 -1 下标0到-1是查询所有
Redis Rpoplpush 命令 移除列表的最后一个元素,并将该元素添加到另一个列表的开头并返回 RPOPLPUSH list list2
Redis Blpop 命令 移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。blpop list 10 可以在10秒内,在打开一个程序窗口,添加一条数据,blpop就继续执行
Redis Brpop 命令 移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。BRPOP list1 100
Redis Brpoplpush 命令 从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。 Brpoplpush list list2 10 可以在10秒内,在打开一个程序窗口,添加一条数据,blpop就继续执行
Redis Lrem 命令 移除列表元素 lrem list 1 a 1是count a是value COUNT 的值可以是以下几种:
count > 0 : 从表头开始向表尾搜索,移除与 VALUE 相等的元素,要删除的数量为 COUNT 。lrem list 1 a
count < 0 : 从表尾开始向表头搜索,移除与 VALUE 相等的元素,删除的数量为 COUNT 的绝对值。lrem list -2 a
count = 0 : 移除表中所有与 VALUE 相等的值。lrem list 0 a
Redis Llen 命令 获取列表长度 LLEN list 查询列表的个数
Redis Ltrim 命令 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。LTRIM list 1 10 只保留下标为0到下标为10的数据,不在指定范围的数据删除
Redis Lpop 命令 移出并获取列表的第一个元素 lpop list
Redis Lpushx 命令 将一个或多个值插入到已存在的列表头部 lpushx list 1 2 3 4 如果list列表不存在时操作无效。
Redis Linsert 命令 在列表的元素前或者后插入元素 LINSERT list BEFORE "4" "5" :在4之前插入5
Redis Rpop 命令 移除并获取列表最后一个元素 rpop list
Redis Lset 命令 通过索引设置列表元素的值 LSET list 0 "bar" 把下标为0的设置为bar
Redis Lpush 命令 将一个或多个值插入到列表头部 LPUSH list1 "foo"
Redis Rpushx 命令 命令用于将一个或多个值插入到已存在的列表尾部(最右边)。如果mylist2列表不存在,操作无效。 RPUSHX mylist2 "bar"
lpos lpos listString Romanti -- 查询集合listString里的Romanti出现的索引位置(0开始索引)
lmove lmove listString mylist left right -- 从listString源集合的左边弹出个元素,添加到mylist目标集合的右边
blmove blmove listString mylist left right 60 -- 从集合listString左边弹出一个元素放到目标集合mylist的尾部 但是存在60秒的超时时间,超过60秒没有弹出元素则自动失败,返回(nil)

Redis 集合(Set) 命令

Set:集合类型,可以存储一个无序的字符串集合,支持集合操作。

差集:两个集合中不重复的元素,只取前一个集合不重复的元素

交集:两个集合中重复的元素

并集:两个集合合并元素

命令 描述
Redis Sunion 命令 返回所有给定集合的并集 sunion set set2 就是合并起来
Redis Scard 命令 获取集合的成员数 scard set
Redis Srandmember 命令 返回集合中一个或多个随机数 srandmember set 2
Redis Smembers 命令 返回集合中的所有成员 smembers set
Redis Sinter 命令 返回给定所有集合的交集 sinter set set2 就是重复的值
Redis Srem 命令 移除集合中一个或多个成员 srem set f
Redis Smove 命令 将 a 元素从 set 集合移动到 set2 集合 smove set set2 a
Redis Sadd 命令 向集合添加一个或多个成员
Redis Sismember 命令 判断 a 元素是否是集合 key 的成员 sismember set a 存在返回1,不存在返回0
Redis Sdiffstore 命令 返回给定所有集合的差集并存储在 set4中 Sdiffstore set4 set1 set2
Redis Sdiff 命令 返回给定所有集合的差集 Sdiff set1 set2 差集就是不重复的元素,只返回前一个集合不重复的元素
Redis Sscan 命令 迭代集合中的元素 sscan set 0 match *
Redis Sinterstore 命令 返回给定所有集合的交集并存储在 set3中 Sinterstore set3 set1 set2 交集就是重复的
Redis Sunionstore 命令 所有给定集合的并集存储在 set3 集合中 sunionstore set3 set set2 并集就合并元素
Redis Spop 命令 移除并返回集合中的一个随机元素 spop set1
SINTERCARD 生成的交集中的元素数,重复的。 SINTERCARD 2 set1 set2

Redis 有序集合(sorted set) 命令

Zset:有序集合类型,在 set 的基础上,为每元素提供一个 score 值,可以根据 score 值进行排序。

命令的min参数和max参数用于指定用户想要获取的字段序范围,他们的值可以是以下四种值之一:

  • 带有 [ 符号的值表示在结果中包含与指定值具有同等字典序大小的成员

  • 带有 ( 符号的值表示在结果中不包含与给定值具有同等字典序大小的成员

  • 加号 + 表示无穷大

  • 减号 - 表示无穷小

命令 描述
Redis Zrevrank 命令 返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序 zrerank zset a
Redis Zlexcount 命令 在有序集合中计算指定字典区间内成员数量 zlexcount zset [a (c 的成员个数
Redis Zunionstore 命令 计算给定的一个或多个有序集的并集,并存储在新的 key 中 zunionstore zset3 2 zset1 zset2:把1和2的合并到3里面去 ,zset3后面的2是要合并几个集合
Redis Zremrangebyrank 命令 移除有序集合中给定的排名区间的所有成员 zremrangebyrank zset 1 3
Redis Zcard 命令 获取有序集合的成员数 zcard zset
Redis Zrem 命令 移除有序集合中的一个或多个成员 zrem zset a b
Redis Zinterstore 命令 计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中 zinterstore zset3 2 zset1 zset2**:把1和2的重复的值放到3里面去 ,zset3后面的2是要合并几个集合
Redis Zrank 命令 返回有序集合中指定成员的索引 zrank zset a
Redis Zincrby 命令 有序集合中对指定成员的分数加上增量 increment zincrby zset 300 peter 给peter分数加上300
Redis Zrangebyscore 命令 通过分数返回有序集合指定区间内的成员 Zrangebyscore zset 2000 3000 Zrangebyscore zset (2000 (5000获取分值大于3000且小于5000的成员,结果中不包含3000和5000的成员 Zrangebyscore zset - +:最小值到最大纸
Redis Zrangebylex 命令 通过字典区间返回有序集合的成员 zrangebylex zset [a (b:获取zset集合中所有以a开头的成员,那么只须要将min参数的值设置为 [a,max参数的值设置为 (b 即可
Redis Zscore 命令 返回有序集中,成员的分数值 zscore zset a
Redis Zremrangebyscore 命令 移除有序集合中给定的分数区间的所有成员 zremrangebyscore zset 2000 3000
Redis Zscan 命令 迭代有序集合中的元素(包括元素成员和元素分值)
Redis Zrevrangebyscore 命令 返回有序集中指定分数区间内的成员,分数从高到低排序 zrevrangebyscore zset 3000 2000 limit 0 1
Redis Zremrangebylex 命令 移除有序集合中给定的字典区间的所有成员 zremrangebylex zset [a (c
Redis Zrevrange 命令 返回有序集中指定区间内的成员,通过索引,分数从高到底 zrange zset 0 3
Redis Zrange 命令 通过索引区间返回有序集合成指定区间内的成员 zrange zset 0 -1 查询所有
Redis Zcount 命令 计算在有序集合中指定区间分数的成员数 zcount zset 200 300 查询分数200-300的个数
Redis Zadd 命令 向有序集合添加一个或多个成员,或者更新已存在成员的分数 zadd zset a 3500 b 4000

Redis HyperLogLog 命令

命令 描述
Redis Pgmerge 命令 将多个 HyperLogLog 合并为一个 HyperLogLog PFMERGE hll3 hll1 hll2 有去重效果
Redis Pfadd 命令 添加指定元素到 HyperLogLog 中。 PFADD mykey a b c d e f g h i j
Redis Pfcount 命令 返回给定一个或多个 HyperLogLog 的基数估算值,重复的算一个,多个就是之和。PFCOUNT mykey mykey2

Redis 发布订阅 命令

redis发布订阅(pub/sub)是一种消息通信模式:发布者(pub)发布消息,订阅者(sub)接收消息。

redis客户端可以订阅任意数量的频道。

Redis的发布与订阅功能可以让客户端通过广播方式,将 消息(message)同时发送给可能存在的多个客户端,并且发送消息的客户端不需要知道接收消息的客户端的具体信息。换句话说,发布消息的客户端与接收消息的客户端两者之间没有直接联系。

在Redis中,客户端可以通过订阅特定的 频道(channel)来接收发送至该频道的消息,我们把这些订阅频道的客户端称为订阅者(subscriber)。一个频道可以有任意多个订阅者,而一个订阅者也可以同时订阅任意多个频道。除此之外,客户端还可以通过向频道发送消息的方式,将消息发送给频道的所有订阅者,我们把这些发送消息的客户端称为发送者(publisher)。

命令 描述
Redis Unsubscribe 命令 指退订给定的频道。说明:若没有指定channel,则默认退订所有频道 unsubscribe channd
Redis Subscribe 命令 订阅给定的一个或多个频道的信息。subscribe channel channe2
Redis Pubsub 命令 查看订阅与发布系统的状态,说明:返回活跃频道列表(即至少有一个订阅者的频道,订阅模式的客户端除外)PUBSUB CHANNELS PUBSUB CHANNELS news.*
Redis Punsubscribe 命令 退订所有给定模式的频道。说明:pattern 未指定,则订阅的所有模式都会被退订,否则只退订指定的订阅的模式 PUNSUBSCRIBE news.*
Redis Publish 命令 将信息发送到指定的频道。,返回结果:接收到信息的订阅者数量,无订阅者返回0 publish channel "hello" publish newssf "hello"
Redis Psubscribe 命令 订阅一个或多个符合给定模式的频道。说明:每个模式以 * 作为匹配符;例如 cn* 匹配所有以cn开头的频道:cn.java、cn.csdn psubscribe news* it.*
每个模式以 * 作为匹配符,比如 it* 匹配所有以 it 开头的频道( it.news 、 it.blog 、it.tweets 等等), news* 匹配所有以 news. 开头的频道( newsit 、 newsglobal.today 等等),诸如此类。

Redis 事务 命令

Redis事务小结:

  1. 单独的隔离操作:事务中的所有命令都会序列化、顺序地执行。事务在执行过程中,不会被其它客户端发来的命令请求所打断,除非使用watch命令监控某些键。

  2. 不保证事务的原子性:redis同一个事务中如果一条命令执行失败,其后的命令仍然可能会被执行,redis的事务没有回滚。Redis已经在系统内部进行功能简化,这样可以确保更快的运行速度,因为Redis不需要事务回滚的能力。

命令 描述
Redis Exec 命令 执行所有事务块内的命令(提交事务)。exec
Redis Watch 命令 监视一个(或多个) key ,如果在事务执行(提交)之前这个(或这些) key 被其他命令所改动,那么事务将被打断。watch key1 key2
Redis Discard 命令 取消事务,放弃执行事务块内的所有命令。 discard
Redis Unwatch 命令 取消 WATCH 命令对所有 key 的监视。如果在watch命令之后你调用了EXEC或DISCARD命令,那么就不需要手动调用UNWATCH命令。unwatch
Redis Multi 命令 标记一个事务块的开始(开启事务)。multi

Redis 键(key) 命令

说明:先设置一个key,并指定过期时间 秒/毫秒/时间戳秒/时间戳毫秒 ;返回 1 成功 0 失败

expire name 300 -- 把name键设置300秒过期

pexpire name 3000 -- 把name键设置3000毫秒过期(3秒)

expireat name 1633190400 -- 把name键设置为2021-10-2 00:00:00到期(精确秒)

pexpireat name 1633190400000 -- 把name键设置为2021-10-2 00:00:00到期(精确毫秒)

注:使用del可以删除定时的key 使用set可以覆盖定时的key; 使用getset可以返回并设置值,并会删除定时 如使用rename修改key名称,那么key定时器会被携带不会被删除

命令 描述
Redis Type 命令 返回 key 所储存的值的类型。type key 说明:返回当前指定的key的类型。可返回的类型是: string,list,set,zset,hash和stream
Redis PEXPIREAT 命令 设置 key 的过期时间亿以毫秒计。
Redis PEXPIREAT 命令 设置 key 过期时间的时间戳(unix timestamp) 以毫秒计 pexpire key milliseconds
Redis Rename 命令 修改 key 的名称。rename key newkey 说明:修改key名称,存在原来则覆盖,不存在则抛错;如果修改key1为key2,key2存在,则key1覆盖key2的值 rename name name1
Redis PERSIST 命令 移除 key 的过期时间,key 将持久保持。 persist key 清除当前有定时时间的键值,设置永不过期(和普通键值一样了),关闭后并不会删除已有的键值 persist name -- 关闭存在定时的键值
Redis Move 命令 将当前数据库的 key 移动到给定的数据库 db 当中。move key db 说明:把指定的键值移动到选定的数据库db当中。如果key在目标数据库中已存在,或者key在源数据库中不存,则key不会被移动。 move name 2 -- 把name移动到三号数据库里
Redis RANDOMKEY 命令 从当前数据库中随机返回一个 key 。randomkey
Redis Dump 命令 序列化给定 key ,并返回被序列化的值。
Redis TTL 命令 以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)。ttl key查看当前有定时key的剩余时间,返回秒
Redis Expire 命令 语法:expire key seconds [nx|xx|gt|lt],为一个存在的key设置过期时间 秒 expire age 60 age过期时间为60秒
Redis DEL 命令 该命令用于在 key 存在是删除 key。del key [key ...] 说明:删除指定的key del name age address
unlink unlink key [key ...] 说明:其实这个和删除del命令很像,也是存在key删除,不存在则忽略;删除几个键值,则返回删除的个数 unlink name1 name2 name3
注:del和unlink区别 del:它是线程阻塞的,当执行del命令是,del在没执行完时,其它后续的命令是无法进入的(要安全就使用del) unlink:它不是线程阻塞的,当执行unlink命令时,它会将要删除的键移交给另外线程,然后将当前要删除的键与数据库空间断开连接 后续则由其它线程异步删除这些键(要效率快就使用unlink)
Redis Pttl 命令 以毫秒为单位返回 key 的剩余的过期时间。pttl key 说明:查看当前有定时key的剩余时间,返回毫秒
ttl name:返回秒 pttl name: 返回毫秒 注:没过期反剩余时间 过期反-2 没设置过期时间的key反-1
Redis Renamenx 命令 仅当 newkey 不存在时,将 key 改名为 newkey 。renamenx key newkey 说明:修改key名称存在则覆盖,不存在则抛错;如果修改key1为key2,key2存在,则key1修改不成功
Redis EXISTS 命令 检查给定 key 是否存在。exists key [key ...] 说明:返回要查询的key是否存在,存在则返回1,如果设置四个key都存在则会返回4;返回0则代表没有 exists name -- 查看是否存在name的key
Redis Expireat 命令 EXPIREAT の機能は EXPIRE の機能と似ており、どちらもキーの有効期限を設定するために使用されます。違いは、EXPIREAT コマンドで受け入れられる時間パラメータが UNIX タイムスタンプ (unix タイムスタンプ) であることです。キーのタイムスタンプの期限切れ:既存のキーの有効期限を設定します。形式は uinx タイムスタンプで、秒単位で正確です。
Redis キーコマンド 指定されたパターンに一致するすべてのキーを検索します。キーパターン
説明: 指定されたキー パターンの照合と表示に使用されます: クエリ条件: h?llo は hello、hello、および hxllo に一致します。 h*llo は hllo および heeeello に一致します。 h[ae]llo は hello および Hallo に一致します。hillo hello は Hallo に一致します。 , hbllo , ... は、hello などとは一致しません。 h[ae]llo は、hallo と hbllo と一致します。 [ae] は、a ~ e の範囲を示します。 hcllo なども一致します。 次のエスケープ文字と一致させたい場合は、一致させる特殊文字をエスケープするには \ を使用する必要があります。名前を\meに設定 zhangsan キーを名前[\]meに設定します
コピー 構文: copy source destination [db destination-db] [replace]説明: 現在のキーの値をコピーし、新しいキーに保存します (データベース間でコピー可能) 成功した場合は 1 を返し、失敗した場合は 0 を返します。
copy name1 name2 -- name1 の値を name2 にコピー name1 name2 db 5 -- name1 の値を No.6 データベース name2 にコピー name1 name2 replace -- name1 の値を name2 にコピー (存在する場合は強制的にコピー)カバー

おすすめ

転載: blog.csdn.net/m0_65992672/article/details/130554830