最近梳理了一下redis的基本知识。本文会从redis的简单使用、redis的数据类型、redis持久化三个方面做简单阐述和总结。
一、Redis基本操作
1、key的规则
不能使用\n空格。其他都可以
2、key操作
exists key 测试制定key是否存在
del key1 key2 删除key
type key 返回给定key的类型
keys pattern 返回模糊匹配 如:keys *
rename oldkey newkey 改名字
dbsize 返回当前库key数量
expire key seconds 给key设定有效时间
ttl key 返回key剩余有效时间
select db-index 切换库
move key db-index 将key从当前库移动到另一个库
flushdb 删除当前库中所有key
flushall 删除所有库中所有key
二、Redis五种数据类型和基本操作
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
1、String类型
string是基本类型。
操作:
set key value 设置值
mset key1 value1 key2 value2 一次设置多个key值
mget key1 key2 key3 一次获取多个key
incr key 自增加一
decr key 自减一
incrby key integer 加integer
decrby key integer 减integer
append key value 追加value
substr key start end 截取字符串。包括start和end
2、list类型
list类型是一个属相链表。通过push,pop操作从链表头或尾进行添加删除操作。使得list既可以用作栈,也可以作为队列。
操作:
lpush key value key头部添加元素
rpop key key的尾部删除元素,并返回删除元素
llen key 对应list的 长度,key不存在返回0,如果key对应的不是list则返回错误。
lrange key start end 返回指定区间元素
rpush key string 尾部添加
lpop key 头部删除
ltrim key start end 截取list,只保留指定区间内元素
lindex key 2 获取key的第一个元素
3、set集合类型
redis的set是Sting类型的无序集合,set元素最大可以包含(2的32次方-1)个元素。
每个集合的元素不能重复。
操作:
sadd key member 添加set集合元素
srem key mamber 移除
smove p1 p2 member 从p1中移除然后添加到p2
scard key 返回set的元素个数
smember key member 判断member是否存在set中
sinter key1 key2 交集
sunion key1 key2 并集
sdiff key1 key2 差集
smember key 查看集合
适用场景:
tom朋友圈有:1 2 3 4 5,doc朋友圈有:2 3 4 5 6,求tom和doc的朋友交集等。
4、sort set排序集合类型
和set一样sort set也是String类型的集合。不同的是没个元素都会关联一个权。
通过权值可以有序的获取集合中的元素
操作:
zadd key score member 添加key。socre权,member值
zrem key member 移除
zincrby key incr member key中的member加incr
zrank key mamber 查看mmber从小到大排名
zrevrank key member 查看mmber从大到小排名
zrange key start end 按照权正排序
zrevrange key start end 按照权反排序
zcard key 查看集合个数
zscore key element 查看给定元素对应的score
zremrangebyrank key min max 删除集合中给定区间的元素
适用场景:
获得热点帖子信息等。
5、hash类型
操作:
hset key field value 设置hash值
hget key field 获取key
*hmget key field1 field2.. 获取指定key值
*hmget key field1 value1 .. 同时设置多个值
hinrcby key field integer 指定值增加
hexists key field 是否存在
hdel key field 删除
hlen key 获取field的数量
hkeys key 获取所有field
hvals key 获取所有value
*hgetall key 获取所有field和value
三、Redis持久化
redis重启时会把数据放在硬盘一份儿,重启后再拷贝回来。
1,snap shotting快照持久化
一次性把redis中全部数据保存一份在硬盘中,数据大时不适用。
2,append only file(AOF持久化)
appendfsync always 每次写命令都强制写入磁盘
appendfsync everysec 每秒
appendfsync no 依赖os,cpu闲的时候才写入磁盘
操作:
bgsave 异步保存数据到磁盘(快照保存)。
lastsave 返回上次成功保存到磁盘的unix时间戳
shutdown 同步保存到服务器并关闭redis服务器
bgrewriteaof AOF备份文件优化处理:对appendonly.aof优化压缩。
如:./redis-cli bgrewriteaof
./redis-cli -h 127.0.0.1 -p 6379 bgsave 手动发起快照
主从配置
redis.conf中:slaveof IP PORT