redis知識點雜記
最近梳理了一下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
redis知識點雜記