1. 程式人生 > >Redis常用命令帥哥專供版

Redis常用命令帥哥專供版

[TOC]

Redis常用命令帥哥專供版

  • 沒錯這裡說的帥哥指的就是我自己

Redis常用語法及設定帥哥專供版

常用命令

常用命令:
# 監控命令 monitor 該命令實時讀取Redis的所有操作語句
# 該命令可在Redis客戶端內,向一般命令一樣直接執行,但是由於不能用grep等shell命令, 會直接列印所有的Redis操作
./redis-cli monitor | grep 'NOTIFY_EMAIL'

# 指定redis讀取的配置檔案
./redis-server ./redis.conf

# 提供host為localhost,埠為6380,redis服務的統計資訊 
redis-cli -h localhost -p 6380 info 

# 監控host為localhost,埠為6380,redis的連線及讀寫操作 實時輸出
# 該命令可在Redis客戶端內,向一般命令一樣直接執行,但是由於不能用grep等shell命令, 會直接列印所有的Redis操作
redis-cli -h localhost -p 6380 monitor

# 通過密碼和指定埠和host進行登入 
# 此時進入redis命令列後是沒有任何許可權的
# 進入redis後 輸入 auth 按照提示輸入密碼即可
redi-cli -h host地址 -p 埠 -a 密碼

# 批量刪除指定庫中匹配格式的Key
redis-cli -n 0 keys "*" | xargs redis-cli -n 0 del  
# 如果要指定 Redis 資料庫訪問密碼,使用下面的命令
redis-cli -a password keys "*" | xargs redis-cli -a password del  

# 100個併發連線,100000個請求,檢測host為localhost 埠為6379的redis伺服器效能 
redis-benchmark -h localhost -p 6379 -c 100 -n 100000


新增redis登入密碼 
配置檔案: 
#requirepass foobared 修改foobared為任意密碼
重啟redis-server
sudo service redis stop  
sudo redis-server /etc/redis.conf
之後依然可以使用reids-cli登入redis,但是不能做任何的操作,
redis-cli -h 127.0.0.1 -p 6379  
嘗試使用密碼進行登入
redis-cli -h 127.0.0.1 -p 6379 -a myRedis  

通過redis命令列進行配置(臨時性):
config set requirepass my_redis  (可以用來修改密碼)
檢視通過命令列設定的密碼
config get requirepass  
無需重啟redis即可生效
這時候用原來的密碼發現已經不行了.但是重啟redis後,命令列密碼即可失效.

除了在登入時通過 -a 引數制定密碼外,還可以登入時不指定密碼,而在執行操作前進行認證。
redis-cli -h 127.0.0.1 -p 6379
auth 輸入密碼
登入成功  

master配置了密碼,slave如何配置
若master配置了密碼則slave也要配置相應的密碼引數否則無法進行正常複製的。
slave中配置檔案內找到如下行,移除註釋,修改密碼即可
#masterauth  mstpassword

memcache最大支援1m
redis單個val最大1g支援主從配置

註釋: 設定redis預設從後臺啟動
可以通過後臺設定選擇後臺啟動daemonize yes設定完畢後需要重讀配置檔案,如:./redis-server ./redis.conf

1.Keys操作:
exists key 				測試指定 key是否存在
del key1 key2 ....	 		刪除給定Kye
type key					返回指丁Key的value型別
keys pattern				返回匹配指定模式的所有 kye, 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
swapdb db1 db2			互換資料庫db1和db2
info 						可以看到redis當前執行情況, info下列表資訊的也都可以直接呼叫. 
如: 
info Clients			檢視連線的客戶端數量
info Persistence		RDB 和 AOF 的相關資訊
info Memory			檢視記憶體使用情況
info Stats				一般統計資訊
info Replication		主從資訊,master上顯示的資訊
info CPU				CPU計算量統計資訊
info Cluster			叢集相關資訊
info keyspace			檢視所有庫中的key的數量
info all				返回所有資訊
info default			返回預設選擇的資訊
...........巴拉巴拉...還有很多具體可以命令列中直接通過 info 命令檢視.

2.string型別操作:
string是redis最基本的型別
redis的string 可以包含任何資料,包裹JPG圖片或者序列化的物件
單個value值最大上線是1G位元組.
如果只用string型別,redis就可以被看做加上持久化的memcache

set key value			設定key對應的值為string型別的value.
mset key1 value1 ...	一次設定多個Key的值.
mget key1 key2...		一次獲取多個key的值.
incr key				對Key的值做+1操作,並返回新的值.	無Key建立key
decr key				對key的值做-1操作,並返回新的值.
incrby key integer		對Key的值+任意數字, 並返回新的值.
decrby key integer		對Key的值-任意數字,並返回新的值.
append key value		給指定key的支付穿值追加value.
substr key start end		返回擷取過的key的字串值, 序列自0開始.

2.list型別操作
list列表是簡單的字串列表.
list型別其實就是一個雙向連結串列,通過Push,POP操作從連結串列的頭部或者尾部新增刪除元素,
這使得list即可以用作棧,可以用作佇列.
同一個口子進出叫做棧, 一頭進一頭出叫做佇列.
在使用過程中,主要用來做佇列.

lpush key string		在Key對應list的頭部新增字串元素,返回當前長度.
rpop key				從list的尾部刪除元素,並返回刪除元素.
llen key 返回key		對應list的長度,key不存在返回0,如果key對應型別不是list 則返回錯誤.
lrange key start end	返回指定區間內的元素,下標從0開始.
rpush key string		在Key對應list的尾部新增字串元素.
lpop key				從list的頭部刪除元素,並返回元素.
ltrim key start end 	擷取list, 保留指定區間內的元素,其他部分刪除.

3.set型別操作
redis的set是string型別的無需集合.
set元素最大可以包含(2的32次方-1)個元素.
關於set集合型別除了基本的新增刪除操作,其他有用的操作海包含集合的取並集,交集,差集,
通過這些操作,很容易的實現sns中的好友推薦功能.
注意:   每個集合中的各個元素不能重複.
在使用過程中, 主要用來判斷兩個無需集合中的Key中的value的交集,並集,差集

sadd key member...			新增一個string元素到可以對應的set集合中成功返回1.如果元素已經存在集合中,返回0,key對應的set不存在則返回錯誤.
srem key member[member]		從Key對應set中移除給定元素,成功返回1.
smove p1 p2 member			從p1對應set中移除member並新增到p2對應的set中
scard key					返回set的元素個數
sismember key member		判斷member是否在set中
sinter key1 key2.....			返回所有給定key的交集	交集: key1和key2中都有的部分
sunion key1 key2...			返回所有給定key的並集	並集: key1和ke2的集合(重複部分,只取一個)
sdiff key1 key2...				返回所有給定key的差集	差集:key1和key2不相交的部分
smembers key				返回key對應set 的所有元素, 結果是無序的
spop key						移除並返回集合中的一個隨機元素

4.SortSet 有序集合
和set一樣,sortset 也是string型別元素的集合
不同的是每個元素都睡管理一個權重
通過權重值可以有序的獲取集合中的元素.
在使用過程中, 主要可以用來在排序使用.

zadd key score member			新增元素到集合,元素在集合中存在則更新對應score
zrem key member				刪除指定元素 1表示成功, 如果元素不存在返回0
zincrby key incr member			按照incr幅度增加對應member的score值返回score值
zrank key member				返回指定元素在集合中的排名(下標), 集合中元素是按照score從小到大排序的.
zrevrank key member			同上,但是集合中元素是按照score從大到小排序的.
zrange key start end			類似lrange 操作從集合中去指定區間的元素,返回的是有序結果.
zrevrange key start end			同上返回結果是按照score逆序的.
zcard key						返回集合中元素的個數
zscore key element				返回給定元素對應的score
zremrangebyrank key min max 	刪除集合中排名在給定區間的元素.

5.Hash資料型別
hash資料型別儲存的資料與MySQL資料庫中儲存的一條記錄極為相似.

hset key field value				設定hash field為指定值, 如果key不存在,則建立
hget key field					獲取指定的hash的field
hmget key field1 field2 			獲取多個指定的hash field
hmset key field vlaue1 value2		同時設定hash多個field
hincrby key field integer			將指定的hash field 加上給定值
hexists key field 				測試指定的field是否存在
hdel key field					刪除指定的hash  field
hlen key						返回指定hash的field數量
hkeys key					指定hash的所有field
hvals key						返回hash的所有values
hgetall key					發揮hash的所有field和values

持久化操作

持久化操作:

redis為了內部資料到嗯安全考慮, 會吧本身資料以檔案形式儲存到硬碟中一份,在伺服器重啟之後會自定把硬碟中的資料回覆到記憶體的裡面.資料儲存到硬碟燈嗯過程就被稱為'持久化'效果.

1. snap shotting 快照持久化也叫做RDB持久化:
該持久化預設開啟,一次性把redis中全部資料,儲存一份儲存在硬碟中,如果資料非常多(10G-20G)就不適合頻繁該持久化操作.
redis中資料備份檔案預設為的dump.rdb.
RDB的資料dump.rdb(預設檔名)可以直接複製出來給另外一個redis-server使用,但是低版本不可以讀取高版本
配置檔案中redis.conf中:
快照持久化的備份頻率:
save 900 1		當900秒內有超過1個Key通過修改的話, 就發起一次快照儲存.
save 3000 10	當300秒內有超過10個Key被修改,發起一次快照儲存.
save 60 10000	當60秒內超過10000個key修改的話, 發起一次快照儲存.
以上三個save的意思:
資料修改的頻率搞,備份的頻率也高.
資料修改的頻率低,備份的頻率也低.

理解案例:
假如 :沒間隔一個小時做一次持久化.
8:00 快照
間隔時間斷電的話,可能會造成資料丟失,所以在這個時間段可以採用:
精細持久化, 把修改的每個key都儲存起來,並且頻率可以達到(秒級).
9:00 快照
精細持久化
10:00 快照
精細持久化
11:00 快照
精細持久化
12:00 快照
精細持久化
.......... 快照


dbfilename	dump.rdb 	快照持久化儲存的檔名
dir ./					所有持久化儲存的路徑

手動發起持久化:
redis持久化相關命令:
bgsave 			非同步儲存資料到磁碟(快照儲存)
lastsave 			返回上次成功儲存到磁碟的Unix時間戳
shutdown 		同步儲存到伺服器並關閉redis伺服器
bgrewriteaof 		當日志文件過長時優化AOF日誌檔案儲存
./redis-cli bgrewriteaof
./redis-cli bgsave
# 手動發起快照到目標地址
./redis-cli -h 127.0.0.1 -p 6379 bgsave 如果要儲存在本地可以省略IP和埠 ./redis-cli bgsave

2.append only file (AOF 持久化)也叫精細持久化 和快照持久化是一種互補的關係.
本質: 把使用者執行的每個寫指令(新增,修改,刪除)都備份到檔案中,還原資料的時候,就是執行具體指令而已.

預設沒有開啟AOF持久化;
開啟AOF持久化(會清空redis內部的資料):

開啟配置檔案redis.conf :
appendonly no  預設沒有開啟
修改為yes 為開啟.
appendfilename appendonly.aof  設定AOF持久化儲存的名字

配置檔案被修改,需要重啟redis服務:
1. 殺死程序
2. ./redis-server  ./redis.conf	使用該命令讀取配置檔案,同時啟動服務

新的程序啟動好之後, 會在目錄中看到appendonly.aof的AOF持久化的備份檔案

AOF持久化的追加備份頻率:
配置檔案中設定AOF持久化設定:
appendfsync no			對比當前伺服器效能比較寬裕就進行備份,完全依賴OS,持久化沒保障.不推薦
appendfsync erveysec		每秒鐘備份一次(在效能和持久化方面做了很好的折中): 推薦使用 [預設]
appendfsync always		只要有寫指令就寫進行備份資料(最慢, 效能差,但是保證完整的持久化)不推薦


AOF持久化備份後,檔案會特別大,例如,incr num num這個檔案會特別的打,通過檢視得知incr num10次以後,會在備份檔案中,生成多次的自增, 而此時實際上直接可以使用set num 10就可以.這時候使用./redis-cli bgrewriteaof  優化備份檔案中的資料格式. 此時檢視appendonli.aof 之前通過incr num多次的資料,變成了set num 10;

主從模式

3. 主從模式




配置檔案中:
slaveof <masterip><masterport> 修改為 slaveof IP port 設定從伺服器追蹤到哪個主伺服器.預設從伺服器不可以用來寫入;
此時的從伺服器只可以用來讀取,不能寫入. 如果想要寫入需要修改配置檔案:
slave-read-only yes 修改為no

master配置了密碼,slave如何配置
若master配置了密碼則slave也要配置相應的密碼引數否則無法進行正常複製的。
slave中配置檔案內找到如下行,移除註釋,修改密碼即可
#masterauth  mstpassword


資料備份與回覆

資料備份與回覆:
資料備份:
1.在 redis-cli 中使用 save 命令,同步備份所有資料到dump.rdb 中,以RDB檔案的形式儲存到硬碟.
2.使用config get dir	獲取本分目錄

註釋:
一般來說,生產環境很少使用 save, 因為他會阻塞所有的客戶端.儲存資料通常使用 bgsave.

Redis的資料型別

TTL

TTL:
 TTL key
以秒為單位,返回給定 key 的剩餘生存時間(TTL, time to live)。
當 key 不存在,或者 key 沒有設定剩餘生存時間時,命令都返回 -1 。

String 字串型別

	一個鍵最多儲存512M
	1> SET:設定key對應值為value
	語法: SET key value
	SET str1 'xdl'
	
	2>GET:根據KEY找到對應的值
	語法: GET key
	注意:如果key不存在 返回nil
	
	3>GETRANGE:返回字串中的一部分
	語法: GETRANGE key start end 
	
	GETRANGE str1 0 1
	GETRANGE str1 0 -1
	GETRANGE str1 0 -2
	GETRANGE str1 0 1000
	
	4>GETSET:設定指定key的值,並返回舊值
	語法: GETSET key value
	
	SET str2 'itxdl'
	GETSET str2 'xdl'
	注意:當key不存在返回nil
	
	5>MSET:一次設定多個鍵值對
	語法:MSET key value [key value .......]
	
	MSET str4 'xdl' str5 'itxdl' str6 'xdlo2o'


	6>MSETNX:一次設定多個key-value對,只有所有的key都不存在的時候才會成功
	語法: MSETNX key value [key value .....]
	
	MSETNX str10 'a' str11 'b' str12 'c'
	
	MSETNX str12 'd' str13 'e'


	7>MGET:一次得到多個鍵值
	語法: MGET key key 
	
	MGET str4 str5 str6 
	
	8>STRLEN:獲取key的字串長度
	語法: STRLEN key
	STRLEN str4

	9>SETRANGE:相當於字串替換
	語法:SETRANGE key offset value 
	
	SET str7 'hello'

	SETRANGE str7 5 'xdl'

	注意: 如果設定key原來的字串的長度比偏移量小,就會以零位元組(\x00)來填充

	10>SETNX:只有KEY不存在的時候才能設定成功
	語法: SETNX key value
	SETNX str7 'hello'
	
	11>SETEX:設定一個KEY並且設定一個過期時間
	語法: SETEX key seconds value 
	
	SETEX str8 30 'xdl'

	12>PSETEX: 以毫秒為單位設定KEY的生存週期
	語法:PSEREX key milliseconds value

	PSETEX set9 20000 'hello'

	13> INCR:對key中儲存的數字加1 
	
	語法: INCR key 
	
	SET str14 1

	INCR str14
	
	INCR str15
	注意:key如果不存在,則會先初始化為0,在進行INCR操作
	
	14>INCRBY:將key中儲存的數字加上指定增量
	語法: INCRBY key INCREMENT
	SET str16 10
	INCRBY str16 5
	INCRBY str16 1.5
	
	15>INCRBYFLOAT:將key中儲存的數字加上指定浮點數
	語法; INCRBYFLOAT key increment
	SET str17 1
	INCRBYFLOAT str17 1.5 
	
	16>DECR:將key中儲存的數字減1
	語法: DECR key
	SET str18 1
	DECR str18 

	17>DECRBY:將key中儲存的數值減指定值
	語法: DECRBY key decrement
	SET str19 20
	DECRBY str19 5

	18>APPEND:通過APPEND將值追加到字串末尾
	語法:APPEND key value
	SET str20 'xdl'
	APPEND str20 'o2o'


LIST列表型別

	1>LPUSH:向列表左端新增元素
	語法: LPUSH key value value ....
	LPUSH list1 a b c 
	
	2>RPUSH:向列表右端新增元素
	語法: RPUSH key value ....
	RPUSH list1 d e 
	
	3>LRANGE:獲取列表片段
	語法: LRANGE key start stop 
	LRANGE list1 0 -1
	
	4>LPUSHX:向列表頭部新增元素,只有key存在才新增
	語法: LPUSHX key value
	LPUSHX list1 a 

	5>RPUSHX:向列表尾部新增元素,只有key存在才新增
	語法: RPUSHX key value 
	
	6>LPOP:將列表頭部的元素彈出
	語法: LPOP key 
	LPOP list1
	7>RPOP:彈出列表尾部元素
	語法: RPOP key 
	RPOP list1
	8>LLEN:獲取列表長度
	語法 LLEN key 
	LLEN list1 
	
	9>LREM:刪除列表中的指定值
	語法: LREM key count value
	count >0 :從列表頭部開始,向尾部搜尋,移除與value相等的元素,移除count個
	count <0 :從列表的尾部開始,向頭部搜尋,,移除與value相等的元素,移除count個
	count = 0:移除列表中所有與value相等的元素
	
	LPUSH list3 a b c d a e b d c b e d 
	LREM list3 2 a
	LREM list3 -2 b
	LREM list3 0 d
	
	10>LINDEX:獲取指定索引元素上的值
	語法: LIDEX key index
	LINDEX list3 3

	11>LSET:設定指定元素的值
	語法: LSET key index value
	LSET list3 10 a


	12>LTRIM:只保留列表片段
	語法:LTRIM key start stop 
	
	LTRIM list3 0 3

	LPUSH list3 a b c a b c a b c 

	LTRIM list3 0 1000 
	
	13>LINSERT 向列表中插入元素
	語法: LINSERT key BEFORE|AFTER pivot value
	
	LPUSH list4 a b c d 
	
	LINSERT list4 BEFORE 'b' 'x'
	LINSERT list4 AFTER  'b' 'x'
	
	14>RPOPLPUSH:將元素從一個列表轉移到另一個列表
	語法 RPOPLPUSH  source destination 
	LPUSH list5 a b c 
	LPUSH list6 x y z 
	RPOPLPUSH list5 list6 
	

SET集合型別:無序集合

	1> SADD:向集合中新增一個元素
	語法 SADD key value [,.......]
	SADD set1 xdl
	SADD set1 itxdl
	
	2>SMEMBERS:返回指定集合中的元素
	語法: SMEMBERS key
	SMEMBERS set1
	
	3>SISMEMBER:檢查member是否是集合中的成員
	語法:SISMEMBER key member
	SISMEMBER set1 xdl
	
	4>SREM:刪除集合中一個或多個成員
	語法:SREM key member [member ....]

	SREM set1 xdl

	5>SPOP:刪除並返回集合中的隨機元素
	語法: SPOP key
	SPOP set1
	
	6>SRANDMEMBER:隨機返回集合中元素
	語法: SRANDMEMBER key count
	注意:
		count 為正數,而且小於集合中的元素,返回一個隨機元素的集合陣列,
		count 數大於集合中的個數的時候,返回整個集合
		count 為負數,返回一個數組,陣列中的成員可能出現重複,陣列的長度是count的絕對值
 	SRANDMEMBER set1 -3
	7>SDIFF:返回集合的差集
	語法: SDIFF key key ....
	SADD set2 a b c d 
	SADD set3 c d e f 
	SADD set4 a e 
	SDIFF set3 set2
	SDIFF set2 set3 set4
	
	8>SINTER:返回集合的交集
	語法: SINTER key key key ...
	SINTER set2 set3
	SADD set5 c 
	SINTER set2 set3 set5 

	9>SUNION:返回集合中並集
	語法: SUNION key key ... 
	SUNION set2 set3 
	SUNION set2 set3  set4 

	10>SCARD:返回集合中元素個數
	語法: SCARD key 
	SCARD set2

	11>SDIFFSTORE:將差集的結果儲存到指定的集合當中
	語法: SDIFFSTORE destination key key  ....
	SDIFFSTORE set6 set2 set3
	
	12>SINTERSTORE:將交集的結果儲存到指定的集合當中
	語法: SINTERSTORE destination key key  ....
	SINTERSTORE set7 set2 set3
	
	13>SUNIONSTORE:將並集的結果儲存到指定的集合當中
	語法: SUNIONSTORE destination key key  ....
	SUNIONSTORE set8 set2 set3
	
	14>SMOVE:將集合中的元素移動另一個集合中
	語法 SMOVE source destination member 
	SMOVE set3 set2 e

	

Hash型別

	1>HSET:將雜湊表中的key中的field設定成指定的value
	語法:HSET key field value
	HSET h1 username 'zhangsan'
	HSET h1 password '123'
	HSET h1 age '18'
	
	2>HGET:返回雜湊表key中給的field的值
	語法: HGET key field
	HGET h1 username 
	HGET h1 age
	
	3>HSETNX:將hash表中的field設定成指定的值,只有field不存在才能成功,如果field存在,操作無效
	語法 HSETNX  key field value
	HSETNX h1 aaa '20'
	HSETNX h1 aaa '21'
	
	4>HMSET:通過多個 field value設定到hash表key中
	語法 HMSET key  field value field value  .....
	HMSET h2 username 'lisi' age '20' password '456'

	5>HMGET:一次獲得hash表key中多個field的值
	語法: HMGET key field field .....
	HMGET h2 username age password  
	HMGET h2 username age password  aaa 
	注意:如果hash表key中field不存在,返回nil

	6>HGETALL:返回hash表key中所有的field和value
	語法 HGETALL key 
	HGETALL h2
	
	7>HKEYS:返回hash表key中的所有的field
	語法 HKEYS key
	HKEYS h2 
	keys * 檢視所有的key
	
	8>HVALS:返回hash表key中所有的field的對應值
	語法 HVALS key 

	HVALS h2
	

	9>HEXISTS:檢測hash中key的field是否存在
	語法: HEXISTS key field
	HEXISTS h2 username
	HEXISTS h2 aaa

	10>HLEN:返回hash表key中的field的數量
	語法 HLEN key
	HLEN h2

	11>HINCRBY :給hash表key中的field做增量操作
	語法 HINCRBY key field increment
	HSET h3 age 20
	HINCRBY h3 age 5 

	12>HINCRBYFLOAT:給hash表key中的field做增量浮點操作
	語法: HINCRBYFLOAT key field increment
	HSET h3 aaa '12.2'
	HINCRBYFLOAT h3 aaa 2.5 
	
	13>HDEL:刪除hash中key的指定field,可刪除一個或多個
	語法: HDEL key field field  .....
	HDEL h2 username 
	HGETALL h2 
	

zset 有序集合


	1>ZADD:將元素新增到集合中
	語法:ZADD key score member [score member..]
	
	ZADD zset 100 xdl
	
	ZADD zset 98 zhangsan 97 list 80 test 78 test1 60 test2 50 test4


	2>ZSCORE:獲得指定元素的分數
	語法: ZSCORE key member
	
	ZSCORE zset xdl
	
	3>ZRANGE:按照元素分數從小到大的順序返回指定索引start到stop之間的元素(包含兩端)
	語法: ZRANGE key start stop [WITHSCORES]

	ZRANGE zset 0 -1

	ZRANGE zset 0 -1 WITHSCORES
	
	ZRANGE zset 0 1 WITHSCORES

	ZRANGE zset 0 2000 WITHSCORES

	ZRANGE zset 1000 2000 WITHSCORES


	ZADD zset 60 test5 60 test6 60 test7 60 test8

	注意:當兩個元素的分值相同的時候,Redis在排序按照字典的順序(0<9<A<Z<a<z),如果使用的是UTF-8的編碼方式同樣會按照中文字典的方式排序

	4>ZREVRANGE:和ZRANGE相反,按照分值從大到小排序
	語法: ZREVRANGE key start stop [WITHSCORES]
	ZREVRANGE zset 0 -1 
	ZREVRANGE zset 0 -1 WITHSCORES
	ZREVRANGE zset 0 2000 WITHSCORES

	5>ZRANGEBYSCORE:獲得指定分數範圍的元素,按照分值從小到大排序,返回的是分值的指定min到max的元素
	語法:ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
	
	#獲取70 -90之間的元素 包含70 90 

	ZRANGEBYSCORE zset 70 90 
	
	ZRANGEBYSCORE zset 70 90 WITHSCORES

	ZADD zset 70 test9 75 test10 80 test11 85 test12 90 test13
	
	ZRANGEBYSCORE zset (70 90 WITHSCORES

	ZRANGEBYSCORE zset 70 (90 WITHSCORES

	ZRANGEBYSCORE zset 70 (90 WITHSCORES LIMIT 0 3
	
	注意: 通過(代表不包含

	6>ZREVRANGEBYSCORE:獲得指定分數範圍的元素,按照分值從大到小的順序返回,
	語法: ZREVRANGEBYSCORE  key max min [WITHSCORES] [LIMIT offset count]
	ZREVRANGEBYSCORE zset 90 70 WITHSCORES

	ZREVRANGEBYSCORE zset (90 70 WITHSCORES

	ZREVRANGEBYSCORE zset (90 70 WITHSCORES LIMIT 0 3
	
	7> ZINCRBY:操作元素的分值,返回操作之後的分數
	語法:ZINCRBY key increment member
	
	ZINCRBY zset 10 test13

	ZINCRBY zset -20 test13

	8>ZCARD:來獲取集合中的元素數量

	語法:ZCARD key 
	ZCARD zset 

	9>ZCOUNT:獲取分數內的元素數量

	語法:ZCOUNT key min max 

	ZCOUNT zset 70 90

	ZCOUNT zset (70 (90

	10>ZREM:刪除一個或多個元素,返回刪除元素的數量
	語法:ZREM key member .....

	ZREM zset test13 test12

	11>ZREMRANGEBYRANK:按照排名範圍刪除元素,按照分數從小到大的順序刪除指定的排名範圍內的所有元素
	語法: ZREMRANGEBYRANK key start stop 
	ZADD testRen 1 a 2 b 3 c 4 d 5 e 6 f 7 g 8 h
	
	ZREMRANGEBYRANK testRen  0 1

	ZRANGE testRen  0 -1 WITHSCORES
	
	12>ZREMRANGEBYSCORE:按照分數範圍刪除元素

	語法:ZREMRANGEBYSCORE key min max 
	ZADD testRen1 1 a 2 b 3 c 4 d 5 e 6 f 7 g 8 h
	ZRANGE testRen1  0 -1
	ZREMRANGEBYSCORE testRen1  3 7

	13>ZRANK:獲取指定元素的排名,根據分數從小到大的順序
	語法 ZRANK key member

	ZRANK zset xdl

	14>ZREVRANK: 獲取指定元素排名.根據分數從大到小的順序
	語法:  ZREVRANK key member 

	ZREVRANK zset xdl
	15>ZINTERSTORE:計算有序集合的交集,並將結果儲存起來
	語法:ZINTERSTORE destination numkeys [WEIGHTS weight weight] [AGGREGATE SUM | MIN |MAX]
	ZADD zset2 1 a 2 b 3 c 
	ZADD zset3 10 a 20 b 30 c

	ZINTERSTORE zset4 2 zset2 zset3

	ZRANGE zset4  0 -1 WITHSCORES
	
	ZINTERSTORE zset5 2 zset2 zset3  AGGREGATE  MIN

	ZRANGE zset5  0 -1 WITHSCORES

	ZINTERSTORE zset6 2 zset2 zset3  AGGREGATE  MAX
	
	ZRANGE zset6  0 -1 WITHSCORES

	ZINTERSTORE zset7 2 zset2 zset3 WEIGHTS 2 0.2

	ZRANGE zset7  0 -1 WITHSCORES
	

	16>ZUNIONSTORE :計算有序集合的並集,將結果儲存起來

	語法: ZUNIONSTORE destination numkeys [WEIGHTS weight weight] [AGGREGATE SUM | MIN |MAX]

	ZADD zset8 1 a 2 b 3 c 

	ZADD zset9 4 d 5 e 6 f 7 a

	ZUNIONSTORE zset10 2 zset8 zset9 
	
	ZRANGE zset10  0 -1 WITHSCORES

	ZUNIONSTORE zset11 2 zset8 zset9  AGGREGATE SUM

	ZRANGE zset11  0 -1 WITHSCORES

	ZUNIONSTORE zset12 2 zset8 zset9  AGGREGATE MIN 

	ZRANGE zset12  0 -1 WITHSCORES

	ZUNIONSTORE zset13 2 zset8 zset9  AGGREGATE MAX

	ZRANGE zset13  0 -1 WITHSCORES

	ZUNIONSTORE zset14 2 zset8 zset9  WEIGHTS 2 2

	ZRANGE zset14  0 -1 WITHSCORES


其他

SETNX key value 將 key 的值設為 value ,當且僅當 key 不存在。若給定的 key 已經存在,則 SETNX 不做任何動作。

SETEX KEY_NAME TIMEOUT VALUE 用於在Redis鍵中的指定超時,設定鍵的字串值。字串,如果在鍵中設定了值則返回OK。如果值未設定則返回 Null。

	type key 檢視key是什麼型別

	info 可以看到redis當前執行情況, info下的也都可以再次呼叫. 
如: 
info keyspace       檢視所有庫中的key的數量
info Clients		檢視連線的客戶端數量
info Memory		檢視記憶體使用情況
...........巴拉巴拉...還有很多具體可以命令列中直接通過 info 命令檢視.

		
	dbsize則是當前庫key的數量

	keys *這種資料量小還可以,大的時候可以直接搞死生產環境。

	dbsize和keys *統計的key數可能是不一樣的,如果沒記錯的話,keys *統計的是當前db有效的key,而dbsize統計的是所有未被銷燬的key(有效和未被銷燬是不一樣的,具體可以瞭解redis的過期策略) 

# expire 設定key生存時間 返回值: 為1成功, 0失敗或者不存在	語法: expire key time
# 刪除當前資料庫中的所有Key
flushdb
# 刪除所有資料庫中的key
flushall


Redis 優化 找出拖慢 Redis 的罪魁禍首

INFO commandstats 通過這個工具可以檢視所有命令統計的快照,比如命令執行了多少次,執行命令所耗費的毫秒數(每個命令的總時間和平均時間)
只需要簡單地執行 CONFIG RESETSTAT 命令就可以重置,這樣你就可以得到一個全新的統