目录
- [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:把 key 和 value 存储进去
语法:
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
你好