【Redis】通用命令 1

目录

  • [1. get/set](#1. get/set)
  • [2. keys](#2. keys)
  • [3. exists](#3. exists)
  • [4. del](#4. del)
  • [5. expire](#5. expire)
  • [6. ttl](#6. ttl)
  • [7. type](#7. type)
  • [8. 计数命令](#8. 计数命令)
    • [8.1 INCR](#8.1 INCR)
    • [8.2 INCRBY](#8.2 INCRBY)
    • [8.3 DECR](#8.3 DECR)
    • [8.4 DECRBY](#8.4 DECRBY)
    • [8.5 INCRBYFLOAT](#8.5 INCRBYFLOAT)
  • 9.append
  • [10. getrange](#10. getrange)
  • [11. setrange](#11. setrange)
  • [12. strlen](#12. strlen)

Redis是按照键值对的方式来存储数据的 <key,value>
key固定就是字符串, value实际上会有很多类型------字符串、哈希表、列表、集合、有序集合

1. get/set

get:根据 key 来取 value
set:把 keyvalue 存储进去

语法:
SET key value [expiration EX seconds|PX milliseconds] [NX|XX]
GET key

powershell 复制代码
127.0.0.1:6379> set hello 1
OK
127.0.0.1:6379> set hbllo 1
OK
127.0.0.1:6379> set heeeeeello 1
OK
127.0.0.1:6379> get hello
"1"
127.0.0.1:6379> get llo
(nil)   #key不存在返回nil,也就是null
  • NX:如果 key 不存在,才设置;key存在,则不设置(返回nil)
  • XX:如果 key 存在,才设置; key 不存在,则不设置(返回nil)
  • 如果 key 不存在,创建心得 键值对
  • 如果 key 存在,则让新的 value 覆盖旧的value 可能会改变原来的数据类型 。原来这个 key ttl(生存时间)也会失效
  • 对于 GET 来说,只支持字符串类型的value,如果value是其他类型,使用get 获取就会出错
powershell 复制代码
127.0.0.1:6379> set key1 111 ex 10
OK
127.0.0.1:6379> ttl key1
(integer) 7
127.0.0.1:6379> ttl key1
(integer) 5
127.0.0.1:6379> ttl key1
(integer) 4
127.0.0.1:6379> ttl key1
(integer) 3
127.0.0.1:6379> set key2 222 nx
OK
127.0.0.1:6379> set key1 333 xx
(nil)
127.0.0.1:6379> get key1
(nil)

MSET:一次性设置多个 key 的值

语法:MSET key value [key value ...]

powershell 复制代码
127.0.0.1:6379> mset key1 111 key2 222 key3 333
OK

MGET:一次性取出多个key对应的value值

语法:MGET key [key...]

powershell 复制代码
127.0.0.1:6379> mget key1 key2 key3
1) "111"
2) "222"
3) "333"

SETNX:不存在才能设置,存在则设置失败

SETEX:设置过期时间,单位是秒

PSETEX:设置过期时间,单位是毫秒

powershell 复制代码
127.0.0.1:6379> keys *
(empty array)
127.0.0.1:6379> setnx key1 111
(integer) 1
127.0.0.1:6379> get key1
"111"
127.0.0.1:6379> setnx key1 222
(integer) 0
127.0.0.1:6379> get key1
"111"
127.0.0.1:6379> setex key2 10 222
OK
127.0.0.1:6379> ttl key2
(integer) 6
127.0.0.1:6379> get key2
"222"
127.0.0.1:6379> get key2
(nil)
127.0.0.1:6379> psetex key3 10000 333
OK
127.0.0.1:6379> ttl key3
(integer) 8
127.0.0.1:6379> ttl key3
(integer) 5
127.0.0.1:6379> get key3
(nil)

2. keys

keys:用来查询当前服务器上匹配的key

通过一些特殊符号(通配符)来描述 key 的模样,匹配上述模样的 key 就能被查询出来

  • 匹配任意一个字符
  • * 匹配 0 个/ 多个任意字符
  • [abcde] 只能匹配到 a b c d e,别的不行。相当于给出固定的选项了
  • [^e] 排除e,只有e匹配不了,其他的都能匹配
  • [a-b] 匹配 a-b 这个范围内的字符,包含两侧边界
powershell 复制代码
127.0.0.1:6379> keys *
1) "hello"
2) "hllo"
3) "hbllo"
4) "hallo"
5) "heeeeeello"
127.0.0.1:6379> keys h?llo
1) "hello"
2) "hbllo"
3) "hallo"
127.0.0.1:6379> keys h*llo
1) "hello"
2) "hllo"
3) "hbllo"
4) "hallo"
5) "heeeeeello"
127.0.0.1:6379> keys h[abe]llo
1) "hello"
2) "hbllo"
3) "hallo"
127.0.0.1:6379> keys h[^ae]llo
1) "hbllo"
127.0.0.1:6379> keys h[a-e]llo
1) "hello"
2) "hbllo"
3) "hallo"

keys命令的时间复杂度 O(N)

3. exists

exists:判定 key 是否存在

返回值:key 存在的个数(针对多个key来说,是非常有用的)

时间复杂度O(1)

powershell 复制代码
127.0.0.1:6379> exists hallo hello word
(integer) 2 #只有2个key 值存在,其中word不存在
127.0.0.1:6379> exists hello
(integer) 1
127.0.0.1:6379> exists hallo
(integer) 1

4. del

del(delete):删除指定的 key

返回值:删除掉的 key 的个数

时间复杂度O(1)

powershell 复制代码
127.0.0.1:6379> del hllo
(integer) 1
127.0.0.1:6379> del hallo hbllo aaa
(integer) 2

5. expire

expire:给指定的 key 设置过期时间,设置的单位是秒。可以 存活时间超出这个指定的值,就会被自动删除

语法:expire key seconds

此处的设定过期时间,必须是针对已经存在的 key 设置,设置成功返回 1 ,设置失败返回 0

时间复杂度O(1)

powershell 复制代码
127.0.0.1:6379> set hello 111
OK
127.0.0.1:6379> expire hello 10
(integer) 1
127.0.0.1:6379> get hello
"111"
127.0.0.1:6379> get hello
"111"
127.0.0.1:6379> get hello
(nil)

6. ttl

ttl:查看当前 key 的过期时间还剩多少

返回值:剩余过期时间。-1 表示没有关联过期时间,-2 表示key 不存在

语法:ttl key

powershell 复制代码
127.0.0.1:6379> set hello 111
OK
127.0.0.1:6379> expire hello 10
(integer) 1
127.0.0.1:6379> ttl hello
(integer) 7
127.0.0.1:6379> ttl hello
(integer) 6
127.0.0.1:6379> ttl hello
(integer) 4
127.0.0.1:6379> ttl hello
(integer) 3
127.0.0.1:6379> ttl hello
(integer) -2
127.0.0.1:6379> get hello
(nil)

7. type

type:查看 key 对应的 value 的类型

powershell 复制代码
127.0.0.1:6379> set key1 111
OK
127.0.0.1:6379> type key1
string
127.0.0.1:6379> lpush key2 111 222 333
(integer) 3
127.0.0.1:6379> type key2
list
127.0.0.1:6379> sadd key3 111 222 333
(integer) 3
127.0.0.1:6379> type key3
set
127.0.0.1:6379> hset key4 field1 value1
(integer) 1
127.0.0.1:6379> type key4
hash

8. 计数命令

8.1 INCR

将 key 对应的 string 表示的数字加⼀ 。如果 key 不存在,则视为 key 对应的 value 是 0。如果 key 对

应的 string 不是⼀个整型 或者范围超过了 64 位有符号整型,则报错

语法:INCR key

powershell 复制代码
127.0.0.1:6379> set key 10
OK
127.0.0.1:6379> incr key
(integer) 11
127.0.0.1:6379> incr key1
(integer) 1
127.0.0.1:6379> set key2 hello
OK
127.0.0.1:6379> incr key2
(error) ERR value is not an integer or out of range
127.0.0.1:6379> set key3 22222222222222222222222222222222222222222222222222222222222222
OK
127.0.0.1:6379> incr key3
(error) ERR value is not an integer or out of range

8.2 INCRBY

将 key 对应的 string 表示的数字加上对应的值 。如果 key 不存在,则视为 key 对应的 value 是 0。如

果 key 对应的 string 不是⼀个整型 或者范围超过了 64 位有符号整型,则报错

语法:INCRBY key decrement

powershell 复制代码
127.0.0.1:6379> keys *
(empty array)
127.0.0.1:6379> incrby key1 10
(integer) 10
127.0.0.1:6379> incrby key1 -1
(integer) 9
127.0.0.1:6379> set key2 hello
OK
127.0.0.1:6379> incrby key2 20
(error) ERR value is not an integer or out of range

8.3 DECR

将 key 对应的 string 表示的数字减⼀。如果 key 不存在,则视为 key 对应的 value 是 0。如果 key 对

应的 string 不是⼀个整型或者范围超过了 64 位有符号整型,则报错

语法:decr key

powershell 复制代码
127.0.0.1:6379> set key 10
OK
127.0.0.1:6379> decr key
(integer) 9
127.0.0.1:6379> decr key1
(integer) -1

8.4 DECRBY

将 key 对应的 string 表示的数字减去对应的值。如果 key 不存在,则视为 key 对应的 value 是 0。如

果 key 对应的 string 不是⼀个整型或者范围超过了 64 位有符号整型,则报错

语法:DECRBY key decrement

powershell 复制代码
127.0.0.1:6379> set key 10
OK
127.0.0.1:6379> decrby key 5
(integer) 5
127.0.0.1:6379> decrby key1 10
(integer) -10

8.5 INCRBYFLOAT

将 key 对应的 string 表示的浮点数加上对应的值。如果对应的值是负数,则视为减去对应的值。如果

key 不存在,则视为 key 对应的 value 是 0。如果 key 对应的不是 string,或者不是⼀个浮点数,则报

错。允许采⽤科学计数法表示浮点数

语法:INCRBYFLOAT key increment

powershell 复制代码
127.0.0.1:6379> set key 10.5
OK
127.0.0.1:6379> incrbyfloat key 0.5
"11"

9.append

如果 key 已经存在并且是⼀个 string,命令会将 value 追加到原有 string 的后边。如果 key 不存在,

则效果等同于 SET 命令

返回值:追加完成之后 string 的长度

语法:APPEND KEY VALUE

powershell 复制代码
127.0.0.1:6379> set key hello
OK
127.0.0.1:6379> append key  world
(integer) 10
127.0.0.1:6379> get key
"helloworld"

10. getrange

返回 key 对应的 string 的子串,由 start 和 end 确定(左闭右闭)。可以使用负数表示倒数。-1 代表

倒数第一个字符,-2 代表倒数第二个,其他的与此类似。超过范围的偏移量会根据 string 的长度调整

成正确的值

返回值:string 类型的子串

语法: GETRANGE key start end

powershell 复制代码
127.0.0.1:6379> set key helloworld
OK
127.0.0.1:6379> getrange key 0 -1
helloworld
127.0.0.1:6379> GETRANGE key 1 -2
elloworl

11. setrange

覆盖字符串的⼀部分,从指定的偏移开始。

返回值:替换后的 string 的长度

语法:SETRANGE key offset value

powershell 复制代码
127.0.0.1:6379> set key helloworld
OK
127.0.0.1:6379> setrange key 1 aaa
10
127.0.0.1:6379> get key
haaaoworld
127.0.0.1:6379> setrange key 1 bbbb
10
127.0.0.1:6379> get key
hbbbbworld
127.0.0.1:6379> setrange key 1 cccccccccccccccccccccccccccccccccc
35
127.0.0.1:6379> get key
hcccccccccccccccccccccccccccccccccc

12. strlen

获取 key 对应的 string 的长度。当 key 存放的类型不是 string 时,报错

返回值:string 的长度。或者当 key 不存在时,返回 0。

语法:STRLEN key

powershell 复制代码
127.0.0.1:6379> set key helloworld
OK
127.0.0.1:6379> strlen key
10
127.0.0.1:6379> get key
helloworld
127.0.0.1:6379> set key1 你好
OK
127.0.0.1:6379> strlen key1
6
127.0.0.1:6379> get key1
你好
相关推荐
运维行者_9 小时前
企业无线网络监控的挑战与智能化演进趋势
大数据·运维·服务器·网络·数据库
国强_dev9 小时前
技术探讨:使用 stunnel 加密转发数据库连接时,如何获取客户端真实 IP?
数据库·网络协议·tcp/ip
@insist12310 小时前
系统规划与管理师-信息系统规划核心工作要点解析
数据库·软考·系统规划与管理师·软件水平考试·系统规划与管理工程师
超级数据查看器10 小时前
超级数据查看器 v10.0 发布
java·大数据·数据库·sqlite·安卓
数安3000天10 小时前
增量数据如何自动分类分级,避免目录“过期“?
大数据·数据库
桌面运维家10 小时前
如何用半缓存云桌面将服务器硬盘容量扩展至本地终端?
运维·服务器·缓存
南墙上的石头11 小时前
麒麟 V10 重装人大金仓 V8R6 踩坑实录(含 MySQL 兼容模式)
数据库·mysql
画中有画12 小时前
论向量数据库在项目中的应用
数据库
spider_xcxc12 小时前
Redis 数据库高质量实践指南(一)
运维·数据库·redis·oracle·云计算
l1t13 小时前
在linux和windows中解决duckdb 1.6dev版本输出执行计划报错问题
linux·运维·数据库·windows·duckdb