1. 程式人生 > >redis知識點雜記

redis知識點雜記

基本類型 get 重啟 hot strong hal range 字符 zset

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