Redis(四)——Redis Key 基本命令及 String 类型详解
1、Redis Key基本命令
Redis Key(键)命令用于管理 redis 的键。
语法
Redis 键命令的基本语法如下:
redis 127.0.0.1:6379> COMMAND KEY_NAME
Redis Key 使用案例:
127.0.0.1:6379> set name wanli
OK
127.0.0.1:6379> set pwd 123
OK
127.0.0.1:6379> keys *
1) "name"
2) "pwd"
#-----------------------判断是否存在某个key-----------------------
127.0.0.1:6379> exists name #判断是否存在某个key,
(integer) 1 #存在为1,
127.0.0.1:6379> exists name1
(integer) 0 #不存在为0
#-----------------------把指定key移动到指定数据库-----------------------
127.0.0.1:6379> move name 1 #把名为name的key移动到1号数据库
(integer) 1
127.0.0.1:6379> keys *
1) "pwd"
127.0.0.1:6379> select 1 #切换到1号数据库
OK
127.0.0.1:6379[1]> keys * #key移动成功
1) "name"
127.0.0.1:6379[1]> flushdb #清除1号数据库
OK
127.0.0.1:6379[1]> keys *
(empty array)
#-----------------------指定key的过期时间-----------------------
127.0.0.1:6379> expire pwd 15 #指定名为pwd的key 15s后过期
(integer) 1
127.0.0.1:6379> ttl pwd #查看还有多少时间过期
(integer) 11
127.0.0.1:6379> ttl pwd
(integer) 2
127.0.0.1:6379> ttl pwd
(integer) -2 #key已经过期了
127.0.0.1:6379> get pwd
(nil)
127.0.0.1:6379> keys *
(empty array)
#-----------------------查看key的类型-----------------------
127.0.0.1:6379> type pwd
string
更多常用的Redis Key命令请参照下表:更多命令请参考:https://redis.io/commands
序号 | 命令及描述 |
---|---|
1 | DEL key 该命令用于在 key 存在时删除 key。 |
2 | DUMP key 序列化给定 key ,并返回被序列化的值。 |
3 | EXISTS key 检查给定 key 是否存在。 |
4 | EXPIRE key seconds 为给定 key 设置过期时间,以秒计。 |
5 | EXPIREAT key timestamp EXPIREAT 的作用和 EXPIRE 类似,都用于为 key 设置过期时间。 不同在于 EXPIREAT 命令接受的时间参数是 UNIX 时间戳(unix timestamp)。 |
6 | PEXPIRE key milliseconds 设置 key 的过期时间以毫秒计。 |
7 | PEXPIREAT key milliseconds-timestamp 设置 key 过期时间的时间戳(unix timestamp) 以毫秒计 |
8 | KEYS pattern 查找所有符合给定模式( pattern)的 key 。 |
9 | MOVE key db 将当前数据库的 key 移动到给定的数据库 db 当中。 |
10 | PERSIST key 移除 key 的过期时间,key 将持久保持。 |
11 | PTTL key 以毫秒为单位返回 key 的剩余的过期时间。 |
12 | TTL key 以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)。 |
13 | RANDOMKEY 从当前数据库中随机返回一个 key 。 |
14 | RENAME key newkey 修改 key 的名称 |
15 | RENAMENX key newkey 仅当 newkey 不存在时,将 key 改名为 newkey 。 |
16 | SCAN cursor MATCH pattern] [COUNT count 迭代数据库中的数据库键。 |
17 | TYPE key 返回 key 所储存的值的类型。 |
参考自菜鸟教程:https://www.runoob.com/redis/redis-keys.html
2、Redis 字符串(String)类型
Redis 字符串数据类型的相关命令用于管理 redis 字符串值,基本语法如下:
语法:
redis 127.0.0.1:6379> COMMAND KEY_NAME
使用实例:
#-----------------------key-value的存取-----------------------
127.0.0.1:6379> set key1 wanli
OK
127.0.0.1:6379> get key1
"wanli"
#---------------------- 将指定的 value 追加到该 key 原来值(value)的末尾-------------
127.0.0.1:6379> append key1 hello
(integer) 10
127.0.0.1:6379> get key1
"wanlihello"
127.0.0.1:6379> append key1 "hi"
(integer) 12
127.0.0.1:6379> get key1
"wanlihellohi"
127.0.0.1:6379> append key3 taoxian #如果指定的key不存在,就会创建该指定key,并赋于value
(integer) 7
127.0.0.1:6379> get key3
"taoxian"
#------------------------判断key是否存在-----------------------
127.0.0.1:6379> set key2 shenming
OK
127.0.0.1:6379> exists key1 key2
(integer) 2
#------------------------获取指定key的长度-----------------------
127.0.0.1:6379> strlen key1
(integer) 12
#------------------------操作key中储存的数字-----------------------
127.0.0.1:6379> set view 10
OK
127.0.0.1:6379> get view
"10"
127.0.0.1:6379> incr view #将 key 中储存的数字值减一
(integer) 11
127.0.0.1:6379> incr view
(integer) 12
127.0.0.1:6379> get view
"12"
127.0.0.1:6379> decr view #将 key 中储存的数字值减一
(integer) 11
127.0.0.1:6379> decr view
(integer) 10
127.0.0.1:6379> get view
"10"
127.0.0.1:6379>
127.0.0.1:6379> incrby view 5 #将 key 所储存的值加上给定的增量值
(integer) 15
127.0.0.1:6379> decrby view 5 #将 key 所储存的值减去给定的减量值
(integer) 10
127.0.0.1:6379>
#------------------------查看字符串范围-----------------------
127.0.0.1:6379> set key1 wanliguyichegn
OK
127.0.0.1:6379> GETRANGE key1 0 4 #查看[0,4]
"wanli"
127.0.0.1:6379> GETRANGE key1 0 -1 #查看所有字符串所有内容,相当于get key
"wanliguyichegn"
#------------------------替换字符串内容-----------------------
127.0.0.1:6379> set key2 abcde
OK
127.0.0.1:6379> getrange key2 0 -1
"abcde"
127.0.0.1:6379> setrange key2 2 ** #替换第二个字符后面的内容
(integer) 5
127.0.0.1:6379> get key2
"ab**e"
127.0.0.1:6379> setrange key2 2 $$$$$$$$
(integer) 10
127.0.0.1:6379> get key2
"ab$$$$$$$$"
#------------------------setex(set with expire)-----------------------
127.0.0.1:6379> keys *
1) "key1"
2) "key2"
127.0.0.1:6379> setex key3 10 hello #将值value关联到 key ,并将key 的过期时间设为 10s
OK
127.0.0.1:6379> ttl key3
(integer) 5
127.0.0.1:6379> keys *
1) "key1"
2) "key2"
#------------------------setnx(set if not exist )-----------------------
127.0.0.1:6379> keys * #当前数据库所有key
1) "key1"
2) "key2"
127.0.0.1:6379> setnx key3 hi #只有在 key 不存在时设置 key 的值。
(integer) 1 #为1,表示设置成功
127.0.0.1:6379> keys *
1) "key3"
2) "key1"
3) "key2"
127.0.0.1:6379> setnx key3 hi
(integer) 0 #为0,表示设置失败
127.0.0.1:6379> setnx key3 hello
(integer) 0
#------------------------批量存取key-value-----------------------
127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3 #批量设置
OK
127.0.0.1:6379> keys *
1) "k3"
2) "k2"
3) "k1"
127.0.0.1:6379> mget k1 k2 k3 #批量取出
1) "v1"
2) "v2"
3) "v3"
127.0.0.1:6379> msetnx k1 v1 k4 v4 #当不存在时创建
(integer) 0 #失败了,因为msetnx是原子性操作,要么都成功,要么都失败
127.0.0.1:6379> keys *
1) "k3"
2) "k2"
3) "k1"
127.0.0.1:6379>
#------------------------组合命令 getset-----------------------
127.0.0.1:6379> getset k4 hello #先get再set,get不到就返回nil
(nil)
127.0.0.1:6379> get k4 #set值成功
"hello"
127.0.0.1:6379> getset k4 hi #先get原来的值,替换成新的值
"hello"
127.0.0.1:6379> get k4 #替换成功
"hi"
#------------------------对象形式的key命令-----------------------
127.0.0.1:6379> mset user:1:name wanli user:1:age 3
OK
127.0.0.1:6379> mget user:1:name user:1:age
1) "wanli"
2) "3"
更多命令请参考:https://redis.io/commands