redis小知识
单进程模型:对读写等事件的响应是通过对epoll函数的包装来做到的。
默认16个数据库切片,下标从0开始,初始默认使用0号库,各个库之间相互隔离,可以使用move key db_index来完成key的移动。
dbsize查看当前库的所有key数量,flushdb清空当前库key,flushall清空所有库key。
统一密码管理,即所有库都使用同一密码。
相关key的操作:keys *
用于查看当前库所有key值,expire key seconds
用于设置key过期时间,ttl key
查看key还有多少秒过期(-1永不过期, -2已过期),type key
查看key的类型。
String类型
redis的string类型是二进制安全的,即可以包含任何数据(比如图片或者序列化的对象)。一个字符串的value最多可以容纳521M数据
相关操作:
set
设置值;get
获取key对应值;del
删除key;append
追加key对应的value;strlen
获取key对应value长度。
incr key
按1递增;decr key
按1递减;incrby key num
按指定数值递增;decriby key num
按指定数值递减。
getrange key start end
获取指定区间的值;setrange key start new_value
设置置顶区间范围的值,从开始下标替换新值长度的新值。
setex key seconds value
设置时指定超时时间;setnx key value
当不存在时设值,存在时则无效 5. mset key1 val1 key2 val2 ...
批量设值;mget key1 key2 ...
批量获取;msetnx key1 val1 key2 val2 ...
当有一个不存在时,则该命令不生效。
List类型
List类型为单值多value,类似于java中的List链表,但它是双向列表,两边都可以插入且效率都极高。
相关常用操作:
lpush key val1 val2 ...
设置一个list,从左边插入,对应的右边插入有rpush
,利用该特性可以将list作为堆栈使用;lrange key start end
遍历一个list,其中索引支持负数反向。
lpop key
从左边移除一个元素并返回,对应的有rpop
。
lindex key index
按照索引下标获取元素;llen key
获取list长度
lrem key num value
删除指定数量的value值的元素;ltrim key start end
截取指定范围内的元素列表(边界均包含),并赋值给该key;
rpoplpush key1 key2
将源列表的一个元素出栈并向目标列表入栈;lset key index value
将列表指定位置的值替换;linsert key before/after value new_value
在指定列表的指定value之前/之后插入新值。
Set类型
常用操作:
sadd key val1 val2 ...
向set中插入元素,若重复会自动剔除;smembers key
获取set所有元素;sismember key value
判断指定value是否为set元素,1是0否。
scard key
获取set中元素个数;srem key value
删除指定元素;srandmember key num
在set中随机获取指定个数的元素;spop key
随机出栈;smove key1 key2
在key1中某个值移动到key2中。
sdiff key1 key2
求key1相对于key2的差集(只在key1中,不在key2中);sinter key1 key2
求二者的交集(二者均存在);sunion key1 key2
求二者的并集。
Hash类型
小记 key-value模式不变,但是value是一个键值对。
常用操作:
hset key field val
为hash对象属性赋值;hget key field
获取hash对象指定属性的值;对应的批量操作为hmset key field1 val1 field2 val2 ...
和hmget key field field2 ...
;hgetall key
获取hash对象全部键值对;hdel key field
删除hash对象指定属性;hlen key
获取hash对象的属性个数;
hexists key field
判断指定属性名是否存在;hkeys key
获取hash对象的所有属性名;hvals key
获取所有属性对应的值;hincrby key field num
对指定属性对应的值做递增操作,hincrbyfloat key field num
浮点数递增;hsetnx key field value
不存在时再添加属性。
Zset(sorted set)类型
常用操作:
zadd key score1 element1 ...
添加元素(带分数);zrange key start end
获取所有zset元素,zrange key start end withscores
获取zset所有元素,并展示分数,对应的有zrevrange
从大到小;zrangebyscore key (start_score (end_score *limit start num*
获取指定分数范围的元素,括号表示不包含,limit在结果中从指定下标截取指定个数元素,对应的有zrevrangebyscore
从大到小;
zrem key element
删除指定元素;zcard key
获取element元素个数;zcount key start_score end_score
统计指定分数范围内的元素个数;zrank key element
按分数从低到高排名后获取指定元素的排名(从0开始),zrevrank key element
按分数从高到低排名后获取指定元素的排名(从0开始);zscore key element
获取指定元素的分数值;