一、Redis俩大核心命令
由于Redis是以键值对的形式进行数据存取,自然就离不开不断的存储和获取,而其所对应的命令则是set和get,如此说来二者为Redis的核心基础命令也不为过。
作用:用于存储Stirng类型的数据
返回:当key不存在时设置成功返回OK,当key存在时对原有值进行覆盖
参数:NX表示key不存在时进行存储,XX表示存在时进行存储,EX、PX为设置过期时间,EX时间为s,PX时间为ms
127.0.0.1:6379> set key 111 设置key——value
OK
127.0.0.1:6379> get key 获取value
"111"
127.0.0.1:6379> set key 222 再次设置key对应value值
OK
127.0.0.1:6379> get key value值被覆盖
"222"
127.0.0.1:6379> set key 111 NX
(nil) key存在,设置失败返回nil
127.0.0.1:6379> set key 111 XX
OK key存在,设置成功
127.0.0.1:6379> get key
"111"
作用:获取key所对应的值
返回:当key存在时返回value,不存在时返回nil,当key存储值不为string类型时返回报错,get只能用于string类型获取。
127.0.0.1:6379> set key 111
OK
127.0.0.1:6379> get key 获取value
"111"
127.0.0.1:6379> hset hash field 222 存储hash类型数据
(integer) 1
127.0.0.1:6379> get hash 尝试获取非string数据,获取失败报错
(error) WRONGTYPE Operation against a key holding the wrong kind of value
上述GET、SET只针对value为string类型时有效,value存储数据类型可以为String、Hash、List、Set、ZSet,不同数据结构都有不同种操作命令都是在此基础上进行拓展。
二、常见基本全局命令
作用:返回所有匹配参数的value值,具有以下几个参数
参数 | 作用 |
---|---|
? | 匹配单个字符 |
* | 匹配0-nge字符 |
[ab] | 匹配中括号里的字符 |
[^a] | 排除中括号里的字符 |
[a-b] | 匹配中括号区间内的字符 |
作用:判断key是否存在,可同时判断多个key
返回:当ke存在时返回1,不存在时返回0,多个同时存在时返回存在的个数
127.0.0.1:6379> set key 111
OK
127.0.0.1:6379> exists key key存在返回1
(integer) 1
127.0.0.1:6379> exists key2 key2不存在,返回0
(integer) 0
127.0.0.1:6379> set key2 222
OK
127.0.0.1:6379> set key3 333
OK
127.0.0.1:6379> exists key key2 key3 同时都存在,返回存在个数
(integer) 3
作用:删除存在的key
返回:key存在删除成功返回1,不存在删除失败返回0
127.0.0.1:6379> set key 111
OK
127.0.0.1:6379> set key2 222
OK
127.0.0.1:6379> keys * 查询存在的key
1) "key2"
2) "key"
127.0.0.1:6379> del key3 不存在删除失败返回o
(integer) 0
127.0.0.1:6379> del key2 存在删除成功返回1
(integer) 1
127.0.0.1:6379> keys *
1) "key"
作用:判断key所剩余的过期时间
返回:若key设置过期时间则返回过期时间,没设置则返回-1,key不存在返回-2
127.0.0.1:6379> set key 111
OK
127.0.0.1:6379> set key2 222 ex 60 设置过期时间60s
OK
127.0.0.1:6379> ttl key 未设置返回-1
(integer) -1
127.0.0.1:6379> ttl key2 设置返回过期时间
(integer) 51
127.0.0.1:6379> ttl key3 不存在返回-2
(integer) -2
注:ex设置过期时间单位为s,用ttl查看过期时间;pex设置过期时间单位为ms,用pttl查看过期时间
作用:返回value中存储数据类型
返回:返回值可能为String、Hash、List、Set、ZSet
127.0.0.1:6379> set key 111
OK
127.0.0.1:6379> hset key2 field hello
(integer) 1
127.0.0.1:6379> type key
string
127.0.0.1:6379> type key2
hash
问:Redis中的过期策略是如何实现的?
答:主要通过惰性删除和定期删除两种方式进行实现
惰性删除:当某个key存在并设置过期时间,再次访问该key时发现已经过期便进行删除。
定期删除:定期扫描一定数量的key来进行检查删除,少量多次进行避免线程的阻塞。