8种机械键盘轴体对比
本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?
环境说明环境说明CentOS7操作系统
Redis-3.2.9Key-Value 内存数据库
官方文档
中文文档
历史版本下载【linux】
历史版本下载【windows,zip解压即可使用】
可视化客户端【windows】
使用场景排行榜应用,取 TOP N 操作
需要精确设定过期时间的应用
计数器应用
唯一操作,如:分布式锁、生成全局 ID
实时系统,反垃圾系统
Pub/Sub 构建实时消息系统
构建队列系统
构建反向索引
缓存
1 Keys
1.1 del Key1del key1 key2 ... KeynTIPS:返回真正删除的 key 的数量。
1.1.1 示例:删除 site【不存在的情况】1del site
1.1.2 示例:删除 site【存在的情况】1
2> set site www.wise.com
> del site
1.1.3 示例:删除多个键,如:site1 site2 site31
2
3
4> set site1 www.wise1.com
> set site2 www.wise2.com
> set site3 www.wise3.com
> del site1 site2 site3
1.2 rename Key
把key改名为newkey
1> rename key newkeyTIPS:若 newkey 已存在,则 newkey 的原值被覆盖
示例:把 site 改名为 website
1
2> set site www.wise.com
> get site
1
2> rename site website
> get website
1> get site
1.3 renamenx Key
类似 rename 命令,但只有目标 key 不存在时,才会修改成功。
1.4 move Key
将 ke y移到目的 db【db 默认值是:0-15】1> move key db
1.5 keys pattern
查询 key【pattern 表示正则表达式】
1> keys pattern
在 redis 里,允许模糊查询 key,有3个通配符 *, ? ,[]*: 通配任意多个字符
?: 通配单个字符
[]: 通配括号内的某1个字符
设置多个 Strings 键值对
1> mset one 1 two 2 three 3 four 4
1.5.1 查询以 o 字母开头的 key1> keys o*
1.5.2 查询以 o 字母结尾的 key1> keys *o
1.6 exists Key
判断是否存在 key
1> exists keyTIPS:返回 0 表示不存在,返回 1 表示存在。
1.7 ttl Key
查询 key 的生命周期
1> ttl keyTIPS:返回秒数,-1表示永不过期,-2表示 key 不存在。
1.8 expire Key
设置 key 的生命周期,以秒为单位
1> expire site 整型值
1.9 sort key1
返回或存储 key 的 list、set 或 sorted set 中的元素
1> sort key [by pattern] [limit offset count] [get pattern] [asc|desc] [alpha] destination
1.9.1 示例:按值本身大小排序【默认升序】
按值升序排序
1
2> rpush numbers 9 5 1 3 2
> sort numbers
或
1> sort numbers asc
按值降序排序
1> sort numbers desc
1.9.2 示例:按分值排序1
2> zadd scores 4 peter 5 jack 6 tom
> zrange scores 0 -1
1.9.3 示例:基于外部键的值进行排序1
2
3> sadd names peter jack torm
> mset peter-score 4 jack-score 5 tom-score 3
> sort names by *-score
1.9.4 示例:指定返回结果的数量1
2> rpush numbers 8 1 3 9 2 0 4 6 7 5
> sort numbers limit 0 3
1.9.5 示例:存储排序结果1
2
3> rpush numbers 8 1 3 9 2 0 4 6 7 5
> sort numbers store sorted-numbers
> lrange sorted-numbers 0 -1
2 Strings
使用场景:位图记录信息
存储时效数据
2.1 set key
添加键值对
1> set key value [ex 秒数] / [px 毫秒数] [nx] / [xx]nx: 表示 key 不存在时,则执行操作
xx: 表示 key 存在时,则执行操作TIPS:若 ex,px 同时写,则以后面的有效期为准。
2.2 mset key
一次性添加一个或多个键值对
1> mset key1 v1 key2 v2 ....
2.3 get key
获取 key 的值
1> get key
2.4 mget key
一次性获取一个或多个 key 的值
1> mget key1 key2 …
2.5 setrange key
把字符串的 offset 偏移字节,改成 value
1> setrange key offset value
示例:将为 hell o改为 hexlo
1
2
3> set greet hello
> setrange greet 2 x
> get greet
TIPS:注:若偏移量大于字符长度, 该字符自动补 0x00。
2.6 getrange key
获取字符串中 [start, stop] 范围的值
1> getrange key start stopstart>=length, 则返回空字符串
stop>=length,则截取至字符结尾
若 start 所处位置在 stop 右边, 返回空字符串TIPS:对于字符串的下标,左数从0开始,右数从-1开始。
示例:获取 title 值的部分字符串
1
2> set title 'chinese'
> getrange title 0 3
1> getrange title 1 -2
2.7 incr key
指定的 key 的值加1,并返回加1后的值
1> incr keyTIPS:不存在的 key 当成0,再 incr 操作,范围为64位有符号。
2.8 incrby key
指定的 key 的值加 n,并返回加 n 后的值
1> incrby key n
2.9 decr key
指定的 key 的值减1,并返回减1后的值
1> decr key
2.10 decrby key
指定的 key 的值减n,并返回减 n 后的值
1> decrby key n
2.11 getbit key
使用场景:使用位图法记录大量信息。
获取值的二进制表示,对应位上的值(从左,从0编号)
1> getbit key offset
示例:获取字符A的二进制表示【01000001】
1
2> set char A
> getbit char 1
2.12 setbit key
设置 offset 对应二进制位上的值
1> setbit key offset value若 offset 过大,则会在中间填充0
offset 最大2^32-1,可推出最大的的字符串为512MTIPS:返回值为该位上的旧值。
示例:将Q【01010001】转为q【01110001】
1
2
3
4> set upper Q
> get upper
> setbit upper 2 1
> get upper
2.13 bitop operation
对 key1,key2..keyN 作 operation,并将结果保存到 destkey 上,operation 可以是 AND 、 OR 、 NOT 、 XOR
1> bitop operation destkey key1 [key2 ...]TIPS: 对于 NOT 操作, key 不能多个。
示例:将Q【01010001】转为q【01110001】
1
2
3
4
5
6
7> setbit lower 7 0
> setbit lower 2 1
> get lower
> set char Q
> get char
> bitop or char char lower
> get char
2.14 bitcount key
统计字符串被设置为1的bit数
1> bitcount key [start end]TIPS:一般情况下,给定的整个字符串都会被进行计数,通过指定额外的 start 或 end 参数,可以让计数只在特定的位上进行。
示例:统计 mykey 被设置为1的 bit 数
1
2
3> set mykey "foobar"
> get mykey
> bitcount mykey
1> bitcount mykey 0 0
1> bitcount mykey 1 1
3 运维
3.1 切换数据库【默认0-15】1> select n
3.2 显示服务器时间 , 时间戳(秒), 微秒数1> time
3.3 显示当前数据库的key的数量1> dbsize
3.4 后台进程重写日志【AOF】1> bgrewriteaof
3.5 后台保存RDB快照【后台运行】1> bgsave
3.6 保存RDB快照1> bgsave
3.7 显示上次保存时间【恢复数据时使用,可以算出丢失多少数据】1> lastsave
3.8 将当前实例设为master的slave【动态伸缩】1> slaveof master-host port
3.9 清空所有库的所有键1> flushall
3.10 清空当前库所有键1> flushdb
3.11 关闭Redis服务【等价于systemctl stop redis】1> shutdown [save/nosave]TIPS: 若不小心运行了 flushall, 立即 shutdown nosave ,关闭服务,以免AOF日志重写丢失数据。然后手工编辑 AOF 文档, 去掉文档中的 “flushall” 相关行, 最后开启服务,则恢复数据。若 flushall 之后,恰好 AOF 日志重写【bgrewriteaof】了,那么 AOF 文档就清空了,数据丢失。
3.12 显示慢查询1> slowlog get
查看 Redis 服务信息
1> info
重要参数参数说明used_memory:859192数据结构的空间
used_memory_rss:7634944实占空间
mem_fragmentation_ratio:8.89前 2 者的比例,1.N 为佳,若值过大,说明内存的碎片化严重,可以导出再导入一次
role:slave角色【 master 或 slave 】
master_host:192.168.1.128主节点 IP
master_port:6379主节点端口
master_link_status:up主节点状态【 up 或 down 】
rdb_changes_since_last_save:0上次 RDB 保存以后改变的 key 次数
rdb_last_save_time:1375224063上次持久化时间
latest_fork_usec:936上次导出 RDB 快照,持久化花费微秒