1、Redis
1. 基于内存的key-value数据库
2. 基于c语言编写的,可以支持多种语言的api //set每秒11万次,取get 81000次
3. 支持数据持久化
4. value可以是string,hash, list, set, sorted set
2、使用场景
1. 去最新n个数据的操作
2. 排行榜,取top n个数据 //最佳人气前10条
3. 精确的设置过期时间
4. 计数器
5. 实时系统, 反垃圾系统
6. pub, sub发布订阅构建实时消息系统
7. 构建消息队列
8. 缓存
3、key
keys *:获取所有的key select index:选择数据库 move key db:将当前的数据库key移动到某个数据库,目标库有,则不能移动 flush db:清除指定库 randomkey:随机key type key:类型 set key value:设置key get key:获取key mset key1 value1 key2 value2 key3 value3:批量设置key mget key1 key2 key3:批量获取key del key:删除key exists key:判断是否存在key expire key seconds:为给定 key 设置过期时间。 pexpire key milliseconds:设置 key 的过期时间亿以毫秒计。
persist key:移除 key 的过期时间,key 将持久保持。
4、string
set key value:设置指定 key 的值。 get key:获取指定 key 的值。 getrange key start end:返回 key 中字符串值的子字符 getset key value:将给定 key 的值设为 value ,并返回 key 的旧值(old value) mset key value [key value...]: 同时设置一个或多个 key-value 对 mget key [key...]:获取所有(一个或多个)给定 key 的值 setnx key value:只有在 key 不存在时设置 key 的值 setex key seconds value:将值 value 关联到 key ,并将 key 的过期时间设为 seconds (以秒为单位) setrange key offsize value:用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始 incr key:将 key 中储存的数字值增一 incrby key increment:将 key 所储存的值加上给定的增量值(increment) decr key:将 key 中存储的数字值减一 decrby key increment:将 key 所存储的值加上给定的增量值(increment) incrbyfloat key increment:将 key 所储存的值加上给定的浮点增量值(increment) append key value:如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾 strlen key:返回 key 所储存的字符串值的长度 getbit key offsize:对 key 所储存的字符串值,获取指定偏移量上的位(bit)
setbit key offsize value:对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)
bitcount/bitop:位操作
5、hash
hset key field value:将哈希表 key 中的字段 field 的值设为 value hget key field:获取存储在哈希表中指定字段的值 hmset key field1 value1 [field2 value2]:同时将多个 field-value (域-值)对设置到哈希表 key 中 hmget key field1 [field2...]:获取所有给定字段的值 hgetall key:获取在哈希表中指定 key 的所有字段和值 hexists key field:查看哈希表 key 中,指定的字段是否存在 hsetnx key field value:只有在字段 field 不存在时,设置哈希表字段的值 hincrby key field increment:为哈希表 key 中的指定字段的整数值加上增量 increment 。 hdel key field2 [field2]:删除一个或多个哈希表字段 hkeys key:获取所有哈希表中的字段 hvals key:获取哈希表中所有值 hlen key:获取哈希表中字段的数量
6、list
lpush key value1 [value2]:将一个或多个值插入到列表头部 rpush key value1 [value2]:在列表尾部添加一个或多个值 lrange key start stop:获取列表指定范围内的元素 lpop key:移出并获取列表的第一个元素 rpop key:移除并获取列表最后一个元素 llen key:获取列表长度 lrem key count value:移除列表元素 lindex key index:通过索引获取列表中的元素 lset key index value:通过索引设置列表元素的值 ltrim key start stop:对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。 linsert key BEFORE|AFTER pivot value:在列表的元素前或者后插入元素 rpoplpush source destination:移除列表的最后一个元素,并将该元素添加到另一个列表并返回
7、set
sadd key member1 [member2]:向集合添加一个或多个成员 smembers key:返回集合中的所有成员 srem key member1 [member2]:移除集合中一个或多个成员 sismember key member:判断 member 元素是否是集合 key 的成员 scard key:获取集合的成员数 sdiff | sinter | sunion :集合间运算:差集 | 交集 | 并集 srandmember key [count]:返回集合中一个或多个随机数 spop key:移除并返回集合中的一个随机元素
8、zset
zadd key score1 member1 [score2 member2]:向有序集合添加一个或多个成员,或者更新已存在成员的分数 zincrby key increment member:有序集合中对指定成员的分数加上增量 increment zscore key member:返回有序集中,成员的分数值 zrange key start stop [WITHSCORES]:通过索引区间返回有序集合成指定区间内的成员 zrangebyscore key min max [WITHSCORES] [LIMIT]:通过分数返回有序集合指定区间内的成员 Zrevrangebyscore key max min [WITHSCORES]:返回有序集中指定分数区间内的成员,分数从高到低排序 zcard key:获取有序集合的成员数 Zcount key min max:计算在有序集合中指定区间分数的成员数 Zrem key member [member ...]:移除有序集合中的一个或多个成员 Zremrangebyrank key start stop:移除有序集合中给定的排名区间的所有成员 Zremrangebyscore key min max:移除有序集合中给定的分数区间的所有成员 Zrank key member:返回有序集合中指定成员的索引 Zrevrank key member:返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序 Zinterstore destination numkeys key [key ...]:计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中 zunionstore destination numkeys key [key ...]:计算给定的一个或多个有序集的并集,并存储在新的 key 中
9、排序
sort mylist 排序 sort mylist alpha desc limit 0 2 字母排序 sort list by it:* desc by命令 sort list by it:* desc get it:* get参数 sort list by it:* desc get it:* store sorc:result sort命令之store参数:表示把sort查询的结果集保存起来
10、订阅与发布
subscribe channel [channel ...]:订阅给定的一个或多个频道的信息。 publish channel message:将信息发送到指定的频道。 pubsub subcommand [argument [argument ...]]:查看订阅与发布系统状态。 unsubscribe [channel [channel ...]]:指退订给定的频道。 psubscribe pattern [pattern ...]:订阅一个或多个符合给定模式的频道。
punsubscribe [pattern [pattern ...]]:退订所有给定模式的频道。
11、redis事务
隔离性,原子性;步骤: 开始事务,执行命令,提交事务
discard:取消事务,放弃执行事务块内的所有命令。
exec:执行所有事务块内的命令。
multi:标记一个事务块的开始。
unwatch:取消 WATCH 命令对所有 key 的监视。
watch key [key ...]:监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断。
12、服务器管理
dump.rdb appendonly.aof //BgRewriteAof 异步执行一个aop(appendOnly file)文件重写 会创建当前一个AOF文件体积的优化版本
//BgSave 后台异步保存数据到磁盘,会在当前目录下创建文件dump.rdb //save同步保存数据到磁盘,会阻塞主进程,别的客户端无法连接
//client kill 关闭客户端连接 //client list 列出所有的客户端
//给客户端设置一个名称 client setname myclient1 client getname
config get port //configRewrite 对redis的配置文件进行改写
13、rdb
save 900 1 save 300 10 save 60 10000
14、aop备份处理
appendonly yes 开启持久化
appendfsync everysec 每秒备份一次
命令:
bgsave异步保存数据到磁盘(快照保存)
lastsave返回上次成功保存到磁盘的unix的时间戳
shutdown同步保存到服务器并关闭redis服务器
bgrewriteaof文件压缩处理(命令)