redis原理笔记
redis key 命令
command | use |
---|---|
keys * | 查看当前库中key数 |
del key | 立即删除key |
unlink key | 立即提示删除key,实际上是异步进行 |
set key value | 设置键值对 |
type key | 查看key类型 |
exists key | key是否存在 |
expire key 10 | 设置key过期时间,单位为秒 |
ttl key | 查看key是否过期,-1永不过期,-2已经过期 |
操作库命令
command | use |
---|---|
select * | *为[0~15],redis总共有16个库 |
dbsize | 查看当前key数 |
flushdb | 删除当前db |
flushall | 清除所有库 |
value 类型
字符串String
- 最大512M,为2进制安全性,甚至可以保存图片或者序列化对象
- 由于redis是单线程加上多路IO复用,所以在进行操作时是不会被打断的(不同于mameache是多线程加锁)
command | use |
---|---|
get key | 获取数据value |
mget key1 key2… | 获取多个数据 |
msetnx key1 value1 key2 value2… | 插入多个键值对,有存在的就停止 |
mset key1 value1 key2 value2… | 插入多个不存在的键值对 |
append value1 | value+value1,返回总长 |
strlen key | 返回长度 |
setnx key | 只有当key不存在时可以存储,当key已经存在则返回0 |
incr key | 给数字类型的值加一,返回加一后数据 |
decr key | 同上,不过是减法 |
incrby key value | 同上,不过是加上value |
decrby key value | 同上,不过是减法 |
get range key index1 index2 | 获取index1-index2的值 |
set range key index1 value | 从index1开始覆盖值 |
setex key time value | 设置值的时候同时设置过期时间 |
getset key valuenew | 返回旧值同时更新新值 |
列表List
- 单键多值,按照插入顺序排序可以添加元素到头尾,实际上是一个双向链表,头尾操作较快,通过下标操作中间性能会较差
- 元素较少时使用ziplist,分配的是连续内存,元素较多时则使用quicklist,即多个ziplist使用双向指针链接
command | use |
---|---|
lpush/rpush k1 v1 k2 v2 | 从左或右插入一个或者多个值 |
lpop/rpop k | 从左或右吐出一个值,值在键在 |
rpoplpush k1 k2 | 从k1列表右边吐出值加到K2左边 |
lrange k start stop | 从k1开始获取从start到stop下标的值 |
lindex key index | 按照索引下标获取元素(从左到右) |
llen key | 获取长度 |
linsert key before/after value newvalue | 在value后面插入新值 |
lrem key num value |