一、redis 数据结构
丰富的数据结构
hash、链表、集合、有序集合等
1.通用键值操作
--字符串类型
set site www.zixue.it
set age 29
--如何获取当前所有的key 值
keys *
keys pattern 匹配模式;查询相应的key
redis 允许模糊查询
--常用三个通配符
1.* 通配任意多个字符字符
2.?通配任意单个字符
3.[] 通配[]括号内的某一个字符
--精确查询
keys site
---模糊查询
keys s*
keys sit*
keys sit[ey] ---不确定最后的字符是 e 还是 y --类似正则表达式
---中间字符记不清楚,并且只有一个字符
keys si?e --返回结果 site
--随机拿一个key
randomkey 返回随机key
--判断key 类型
type age
---判断一个key 是否存在
exist age ---返回结果是1 表示有;0表示没有
---删除key
del age
---修改key site 名字
rename site wangzhi
--renamenx 假如你修改的那个 key 的新名字,已经存在了呢?
--测试一下
del wangzhi
set site www.zixue.it
set search www.so.com
rename site search
----问题:现在 search 的key值是什么?
get search
www.zixue.it
--那么 之前 search 值就被覆盖了
---避免和已经存在的key 名字,发生冲突---一个新的命令,renamenx 等于 not exist
--先恢复原装
set site www.zixue.it
set search www.so.com
renamenx---如果存在,就修改失败;如果不存在,则修改成功
renamenx site sea --返回 1
get sea
www.zixue.it
renamenx sea search ---返回0
keys * ---发现确实修改失败
search
sea
get search
www.so.com
--移动 key
---单机 redis 默认 配置文件中 给开启了 databases 16 ---默认使用的是 0 号 database
keys *
search
sea
select 1 ---切换其他库
keys * ---返回空
--redis 默认16个库
分别从0-15
默认操作都是在 0号数据库操作
--某个key 不想删除,又不想在0号库,给她挪动到 1号库
move sea 1
keys *
search
---切库到1
select 1
keys *
sea
---key 生命周期,什么时候 key 失效???
--默认没有有效期:原因是 存储。不是缓存;但是可以手动设置有效期
expire
select 0
keys *
search
---查询 search 这个key 还可以 活多久?
--查询有效期
ttl search 返回 -1 ;-1 代表永久有效
--对于不存在的key 返回也是 -1 ;表示永久有效
ttl aaaa ---返回-1
ttl 查询key 返回的是一个 秒数
--默认对于不存在的key 或者已经过期的key 或者不过期的key 返回都是 -1;容易混淆
redis 2.8 中,对于 不存在的key 返回 -2
--设置 过期时间
expire key 周期值
ttl search --返回 -1
expire search 10 ---生命周期10秒
通过 get search ---10秒后发现不存在了,原因是:过期了
---重启 设置key
set site www.zixue.it ---默认永久有效
expire search 10
--查询生命周期
ttl search
---最后出现 -1
ttl查询和expire 都是按照秒为单位
----如果想毫秒做单位
使用 pttl pexpire
set search www.zixue.it
pexpier search 9000 设置9000 毫秒
pttl search --查询还有多少毫秒
---设置key 永久有效
set site www.zixue.it
expire site 10
ttl site
persist site --设置永久生效
ttl site ---返回值 -1