Redis Remote Dictionary Server 远程字典服务器
功能
缓存(当空间达到限制时,可以按照一定规则,淘汰部分数据)
队列(支持阻塞式读取)
订阅/发布(可以将其做出聊天室)
特点
内存存储
可以持久化
数据类型丰富
单线程
命令都是原子操作
命令简单
常用命令
keys pattern 获取符合规则的key列表
注:? 一个字符
* 0到多个字符
[] 方括号中的任意字符(‘-’表示范围)
exists key 该key是否存在(1存在,0不存在)
del key ... 删除一个或多个key(不支持通配符,但可以通过Linux命令来达到模式匹配的目的)
type key 获取key的类型
字符串操作 命名 “对象类型:ID:对象属性”
set key value (可以覆盖同名key 无论是什么类型)
get key
incr key(当value为整数时+1,并返回+1后的值;若不是整数error;没有该key时,默认原先值为0)
自增ID 设立一个key 命名为 “对象类型:count”
位操作 存储只有几种值得字段特别省空间
散列表 命名 “对象类型:ID” (解决hash冲突时用拉链法)
hset key field value (若field存在,即更新)(hsetnx field存在 不操作)
hget key field
hmset key field value [...]
hmget key field [...]
hgetall key
hincrby key field increment (能增加浮点数吗?)
hdel key field []
hkeys key 返回全部键
hvals key 返回全部值
hlen key 字段数量
列表(内部实现是用链表,两头快中间慢)(适用于新鲜事、日志系统)
lpush key value [...] 左边添加
rpush key value [...] 右边添加
lpop key 左弹出
rpop key 右弹出
llen key 列表中有多少元素
lrange key start stop 返回(从左开始)start stop之间的片段(0表示左边第一个)(为负数是表示从右开始,-1表示右边第一个)
ltrim key start stop 截取start stop之间的片段(不返回)
lrem key count value
count>0 删除左开始前count个值为value的元素
count=0 删除所有值为value元素
count<0 删除右开始前count个值为value的元素
lindex key index 返回指定位置的元素(index为位置)
linsert key before/after pivot value 从左往右查找值为pivot的元素,更具before/after决定将value插在它的前面还是后面
rpoplpush source destination 从源的右边弹出,再将该元素压入目标的左边
集合(用无value的散列表实现)
sadd key member [...] 添加元素
srem key member [...] 删除元素
smembers key 返回全部元素
sismember key member 是否在集合中
sdief keyA [keyX ...] 集合差集(元素属于A且不属于后面的集合)
sinter keyA [keyX ...] 集合交集(所有集合的公共部分)
sunion keyA [keyX ...] 集合并集(所有集合的所有部分)
scard key 集合元素的个数
sdiefstore destination keyA [keyX ...] 将集合运算结果放入destination中
sinterstore destination keyA [keyX ...]
sunionstore destination keyA [keyX ...]
spop key 从集合中弹出一个元素
srandmember key [count] 从集合中随机得到count个元素
count不写默认为1
count正数 返回不重复的
count负数 返回可重复的
不是很随机,原理是先随机找一个拉链,再随机找拉链上的值
有序集合(散列表和跳跃表实现的,读中间值也快,耗内存)
zadd key score member [...] 增加分数和成员(+inf 正无穷 -inf 负无穷)
zscore key member 得到元素的分数
zrange key start stop [withscores] 将start 和 stop之间的元素 从小到大排列输出 (带着后面的参数就会输出分数)
zrevrange 从大到小输出
zrangbyscore key min max [withscores] [limit offset count] 得到分数在min 到max之间的元素
在min、max前加"("表示不包括这个值
limit 偏移offset开始 输出count个
zincrby key increment member 为某个成员加上increment分 ,increment可为负
zcard key 获得数量
zcount key min max 获得分数在某个范围之内的数量
zrem key member [...] 删除一个或多个元素
zremrangebyscore key min max 按分数删除元素
zremrangebyrank key start stop 按排名删除元素
zrank key member 从小到大(最小为0)得到member的排名
zrevrank key member 从大到小
zinterstore destination numkeys(集合数量) key[...] [weights [各个集合的权重]] [重复值计算方式]
总结:
1为成功 0为失败
长度 列表为len 集合为card
删除 rem
位置 0 表示正着第一个 -1 表示负的第一个
增加值 incrby 可为负(列表、集合没有)
顺序:默认 从左到右 从小到大