環境
虛擬機:VMware 10
Linux版本:CentOS-6.5-x86_64
客戶端:Xshell4
FTP:Xftp4
jdk8
redis-2.8.18redis
1、redis客戶端基礎命令
一、幫助命令shell
PCS103:6379> help redis-cli 2.8.18 Type: "help @<group>" to get a list of commands in <group> #加@ 列出group組命令解釋 "help <command>" for help on <command> #查看單個命令解釋 "help <tab>" to get a list of possible help topics #補全命令 "quit" to exit #退出
二、鍵
鍵(key)是二進制,空字符串是有效key值,不宜過長或太短。數據庫
2.1過時:給Key設置一個生存時間(秒或毫秒),當達到這個時長後,這些鍵值將會被自動刪除
(1)設置多少秒後過時
EXPIRE key seconds
set key val ex 10安全
(2)設置多少毫秒後過時
PEXPIRE key milliseconds數據結構
(3)設置在指定Unix時間戳過時
EXPIREAT key timestamp
PEXPIREAT key milliseconds-timestamp網站
(4)刪除過時
PERSIST keyui
2.2生存時間
Time To Live,Key的剩餘生存時間spa
(1)查看剩餘生存時間
TTL key 返回剩餘的秒
PTTL key 返回剩餘的毫秒
key存在但沒有設置TTL,返回-1
key存在,但還在生存期內,返回剩餘的秒或者毫秒
key曾經存在,但已經消亡,返回-2(2.8版本以前返回-1)code
2.3查找鍵
KEYS patternblog
pattern取值
* 任意長度字符
? 任意一個字符
[] 字符集合,表示能夠是集合中的任意一個
2.4鍵類型
TYPE key 返回值數據類型
object encoding key 列出value值底層存儲的數據結構類型
PCS103:6379> set k1 bhjsbda OK PCS103:6379> set k2 100 OK PCS103:6379> type k1 string PCS103:6379> type k2 string PCS103:6379> object encoding k1 "raw" PCS103:6379> object encoding k2 "int"
raw 表示存儲的是原生字符串,若是要查看value包含中文時 能夠設置客戶端模式:redis-cli --raw
2.5鍵是否存在
EXISTS key
鍵重命名
RENAME key newkey
RENAMENX key newkey
鍵刪除
DEL key [key ...]
2.6清除數據庫
清除當前庫數據
FLUSHDB
清除全部庫中的數據
FLUSHALL
2、string字符串
字符串是二進制安全的,最多能存儲512M字節的內容
一、設置字符串值 set
SET key value [EX seconds] [PX milliseconds] [NX|XX]
EX 設置過時時間,秒,等同於SETEX key seconds value
PX 設置過時時間,毫秒,等同於PSETEX key milliseconds value
NX 鍵不存在,才能設置,等同於SETNX key value
XX 鍵存在時,才能設置
設置多個鍵的字符串值
MSET key value [key value ...]
鍵不存在時,設置字符串值
MSETNX key value [key value ...]
注意:這是原子操做
二、獲取字符串值 get
GET key
獲取多個給定的鍵的值
MGET key [key ...]
返回舊值並設置新值
GETSET key value
若是鍵不存在,就建立並賦值
三、字符串長度
STRLEN key
四、追加字符串
APPEND key value
若是鍵存在就追加;若是不存在就等同於SET key value
五、獲取子字符串 索引
GETRANGE key start end
索引值從0開始,負數表示從字符串右邊向左數起,-1表示最有一個字符
覆蓋字符串
SETRANGE key offset value
六、步長1的增減
INCR key
DECR key
字符串值會被解釋成64位有符號的十進制整數來操做,結果依然轉成字符串
按照指定步長decrement增減
INCRBY key decrement
DECRBY key decrement
字符串值會被解釋成64位有符號的十進制整數來操做,結果依然轉成字符串
按照指定步長浮點數decrement增長
INCRBYFLOAT key decrement
七、位圖
(1)賦值 取值
設置某一位上的值
SETBIT key offset value (0/1)
offset偏移量,從0開始
獲取某一位上的值
GETBIT key offset
返回指定值0或者1在指定區間上第一次出現的位置偏移量
BITPOS key bit [start] [end]
(2)位運算
operation 能夠是 AND 、 OR 、 NOT 、 XOR 這四種操做中的任意一種
BITOP AND destkey key [key ...] ,對一個或多個 key 求邏輯並,並將結果保存到 destkey
BITOP OR destkey key [key ...] ,對一個或多個 key 求邏輯或,並將結果保存到 destkey
BITOP XOR destkey key [key ...] ,對一個或多個 key 求邏輯異或,並將結果保存到 destkey
BITOP NOT destkey key ,對給定 key 求邏輯非,並將結果保存到 destkey
除了 NOT 操做以外,其餘操做均可以接受一個或多個 key 做爲輸入
當BITOP處理不一樣長度的字符串時,較短的那個字符串所缺乏的部分會被看做 0
空的key也被看做是包含0的字符串序列
(3)BITCOUNT統計指定位區間上值爲1的個數 字節
bitpos key bit(0/1) start end > start end bit位的索引
BITCOUNT key [start] [end] > start end Byte位的索引 正負方向
案例:
網站用戶的上線次數統計(活躍用戶)
用戶ID爲key,天做爲offset,上線置爲1 366> 000000000000000
366 /8 50Byte 16 50
key: sean value: 11 1 000000000000000001010000000000000000
ID爲500的用戶,今年的第1天上線、第30天上線
SETBIT u500 1 1 1 0 0 000 0 …….1 0 00 0 > 365 /8 46 Byte
SETBIT u500 30 1
BITCOUNT sean 0 -1
KYES u*
按天統計網站活躍用戶天做爲key,用戶ID爲offset,上線置爲1求一段時間內活躍用戶數 500 / 8 366 * 63ByteSETBIT 20160601 15 1 1 1 0 1 00 00 00 0 00 00 0 SETBIT 20160603 123 1 0 1 0 0 00 00 01 0 00 00 0 SETBIT 20160606 123 1 0 1 0 0 00 00 01 0 00 00 0 求6月1日到6月10日的活躍用戶BITOP OR aaa 20160601 20160602 20160603 20160610BITCOUNT aaa 0 -1結果爲2