redis命令不區分大小寫
通用命令:
1. 獲得符合規則的鍵名列表:
keys pattern
其中pattern符合glob風格 ? (一個字符) * (任意個字符) [] (匹配其中的任意一個字符) \x (轉義字符)
需要注意的是keys命令會遍歷redis中的所有鍵,如果鍵比較多,會影響性能
keys * 會列出當前庫中的所有鍵, 注意這個列出的不僅僅是string類型的,其他所有類型的key都包括(即使是hash類型的)。

127.0.0.1:6379> HSET hashkey key1 value1 (integer) 1 127.0.0.1:6379> keys * 1) "hashkey"
2. 判斷一個鍵是否存在:
exists key
如果存在返回 (integer) 1 否則返回 (integer) 0
3. 刪除鍵:
DEL key [key ...]
可以傳入多個key ,其實可以配合 keys命令一起使用:

# 可以發現直接使用*,此時是沒法刪除已有的hashkey鍵 zyq@ubuntu:~/KiDe/Python/test$ redis-cli KEYS * | xargs redis-cli DEL (integer) 0 zyq@ubuntu:~/KiDe/Python/test$ redis-cli KEYS "hash*" | xargs redis-cli DEL (integer) 1 zyq@ubuntu:~/KiDe/Python/test$ redis-cli 127.0.0.1:6379> HSET hashkey key1 value1 (integer) 1 127.0.0.1:6379> exit # 而使用 ` `包裹命令來執行的時候 * 就可以刪除前面設置進去的hashkey鍵 zyq@ubuntu:~/KiDe/Python/test$ redis-cli DEL `redis-cli KEYS "*"` (integer) 1 zyq@ubuntu:~/KiDe/Python/test$ redis-cli 127.0.0.1:6379> HSET hashkey key1 value1 (integer) 1 127.0.0.1:6379> exit zyq@ubuntu:~/KiDe/Python/test$ redis-cli DEL `redis-cli KEYS "hash*"` (integer) 1 # 需要注意的一點還有,第二種用 `` 實現的刪除比第一種效率要高。
4. 獲得鍵值的數據類型:
type key
如果key不存在 返回 none,否則返回key對應的值的類型
字符串類型:
SET key value
GET key
INCR key(如果存儲的值不是數字或者增加之后超過范圍,會報錯) 相當於 value++,但是這個是原子操作
INCRBY key increment(該值可正可負)
DECR key 、 DECRBY key decrement
INCRBYFLOAT key increment (支持 incrbyfloat bar 5E+4)
APPEND key value (只是作為字符串追加)
STRLEN key (如果是中文,則返回中文編碼后的字符串的長度 例如如果是utf-8編碼的"你好" 則 strlen key 返回6)
MGET key [key ...] / MSET key value [key value ...] 可以同時設置或者得到對應的值
GETBIT key offset 得到特定位上的值 如果超過長度則為0
SETBIT key offsetValue 設置特定位上的值 如果超過長度前面不夠的用0補齊,此時要考慮性能
BITCOUNT key [start] [end] 計算從開始到結束的位上1的個數
BITOP operation destkey key [key ...]
BITPOS key 0/1 [start] [end] 獲得第一個是0或1的位置的下標
常見的命令使用情況如下:

1 127.0.0.1:6379> set foo bar 2 OK 3 127.0.0.1:6379> get foo 4 "bar" 5 # 對於非數字的增加,會拋出錯誤 6 127.0.0.1:6379> incr foo 7 (error) ERR value is not an integer or out of range 8 # 如果對於不存在key值加1,相當於新建一個key值為0,然后再往上加一 9 127.0.0.1:6379> incr newkey 10 (integer) 1 11 127.0.0.1:6379> get newkey 12 "1" 13 # float加的時候支持科學計數法 14 127.0.0.1:6379> INCRBYFLOAT newkey 1e+10 15 "10000000001" 16 # 往字符串后面追加值 17 127.0.0.1:6379> append foo bar2 18 (integer) 7 19 127.0.0.1:6379> get foo 20 "barbar2" 21 # 同時設置多個字符串類型的值 22 127.0.0.1:6379> mset key1 你好 key2 我好 key3 大家好 23 OK 24 # 長度根據編碼方式有關 25 127.0.0.1:6379> STRLEN key1 26 (integer) 6 27 127.0.0.1:6379> GETBIT key1 1 28 (integer) 1 29 127.0.0.1:6379> GETBIT key1 2 30 (integer) 1 31 127.0.0.1:6379> BITCOUNT key1 32 (integer) 27
散列類型:
類似於map ,常用命令如下:
HSET key field vlaue
HGET key field
HMSET key field value [field value ...]
HMGET key field [field ...]
HGETALL key
HEXISTS key field 判斷field是否存在
HSETNX key field value 當字段不存在的時候進行賦值,原子操作
HINCRBY key field increment
HDEL key field [field ...]
HKEYS key
HVALS key
HLEN key
命令的使用情況如下:

1 127.0.0.1:6379> hset hashkey key1 value1 2 (integer) 1 3 127.0.0.1:6379> hget hashkey key1 4 "value1" 5 127.0.0.1:6379> hmset hashkey key2 value2 key3 value3 key4 value4 6 OK 7 127.0.0.1:6379> hmget hashkey key1 key2 key3 key4 8 1) "value1" 9 2) "value2" 10 3) "value3" 11 4) "value4" 12 127.0.0.1:6379> hmget hashkey key1 key2 key3 key 13 1) "value1" 14 2) "value2" 15 3) "value3" 16 4) (nil) 17 127.0.0.1:6379> HGETALL hashkey 18 1) "key1" 19 2) "value1" 20 3) "key2" 21 4) "value2" 22 5) "key3" 23 6) "value3" 24 7) "key4" 25 8) "value4" 26 127.0.0.1:6379> HEXISTS hashkey key11 27 (integer) 0 28 127.0.0.1:6379> HSETNX hashkey key1 value11 29 (integer) 0 30 127.0.0.1:6379> HSETNX hashkey key11 value11 31 (integer) 1 32 127.0.0.1:6379> HINCRBY hashkey key5 11 33 (integer) 11 34 127.0.0.1:6379> HDEL hashkey key11 key5 35 (integer) 2 36 127.0.0.1:6379> hkeys hashkey 37 1) "key1" 38 2) "key2" 39 3) "key3" 40 4) "key4" 41 127.0.0.1:6379> HVALS hashkey 42 1) "value1" 43 2) "value2" 44 3) "value3" 45 4) "value4" 46 127.0.0.1:6379> hlen hashkey 47 (integer) 4
列表類型:
LPUSH key value [value ... ]
RPUSH key value [value ... ]
LPOP key
RPOP key
LLEN key
LRANGE key start stop (此時獲得的元素包含下標為stop的, 負數表示倒數)
LREM key count value 表示從列表中刪除count個值為value的元素 (如果count為正數則從左邊起刪除、為負數表示從右邊起刪除)
LINDEX key value
LSET key index value
LTRIM key start end 只保留列表指定范圍的元素(包括下標為end元素)。通常與lpush一起使用 lpush logs $newlog; ltrim logs 0 99
LINSERT key BEFORE|AFTER pivot value 在值為pivot的元素前或者后插入一個值為value的元素 如果沒有找到值為pivot的元素,則返回-1 ,否則返回插入成功之后列表的總長度
RPOPLPUSH source destination 從source列表中rpop一個元素然后lpush到destination列表中去 (source和destination可以是同一個,desitnation如果不存在會創建一個) 該操作也是原子的
命令的使用情況如下:

1 127.0.0.1:6379> lpush list value1 value2 2 (integer) 2 3 127.0.0.1:6379> rpush list value3 value4 4 (integer) 4 5 127.0.0.1:6379> lpop list 6 "value2" 7 127.0.0.1:6379> rpop list 8 "value4" 9 127.0.0.1:6379> llen list 10 (integer) 2 11 127.0.0.1:6379> lrange list 0 -1 12 1) "value1" 13 2) "value3" 14 127.0.0.1:6379> lrem key 1 value 15 (integer) 0 16 # 超過長度返回空 17 127.0.0.1:6379> LINDEX list 2 18 (nil) 19 127.0.0.1:6379> LINDEX list 1 20 "value3" 21 # 超過長度報錯 22 127.0.0.1:6379> LSET list 3 value4 23 (error) ERR index out of range 24 127.0.0.1:6379> LSET list 2 value4 25 (error) ERR index out of range 26 127.0.0.1:6379> LSET list 1 value4 27 OK 28 # 如果不存在對應的元素,則設置失敗返回-1 29 127.0.0.1:6379> LINSERT list BEFORE 1 value3 30 (integer) -1 31 127.0.0.1:6379> lrange list 0 -1 32 1) "value1" 33 2) "value4" 34 127.0.0.1:6379> LINSERT list BEFORE value4 value3 35 (integer) 3 36 127.0.0.1:6379> lpush list2 value21 value22 37 (integer) 2 38 127.0.0.1:6379> RPOPLPUSH list list2 39 "value4" 40 127.0.0.1:6379> lrange list 0 -1 41 1) "value1" 42 2) "value3" 43 127.0.0.1:6379> lrange list2 0 -1 44 1) "value4" 45 2) "value22" 46 3) "value21"
集合類型:
SADD key member [member ... ]
SREM key member [member ... ]
SMEMBERS key
SISMEMBER key member
SDIFF key [key ...] 取第一個集合和剩下的所有集合的差集
SINTER key [key ...] 取所有集合的交集
SUNION key [key ...] 取所有集合的並集
SCARD key 求長度
SDIFFSTORE destination key [key ...] 就是增加了一個存儲的目標列表
SINTERSTORE destination key [key ...]
SUNIONSTORE destination key [key ...]
SRANDMEMBER key [count] 隨機獲得集合中的元素,如果省略count則只獲得一個,如果傳入了count 那么如果count為正,則獲得min(count, scard key)個不同的元素,如果count為負,則隨機獲得-count個元素,但是元素可能相同
SPOP key 隨機彈出一個元素
命令的使用情況如下:

1 127.0.0.1:6379> SADD set member1 member2 member3 2 (integer) 3 3 127.0.0.1:6379> srem set member3 member4 4 (integer) 1 5 127.0.0.1:6379> SMEMBERS set 6 1) "member1" 7 2) "member2" 8 127.0.0.1:6379> SISMEMBER set member3 9 (integer) 0 10 127.0.0.1:6379> SADD set2 member2 member3 member4 11 (integer) 3 12 127.0.0.1:6379> SDIFF set set2 13 1) "member1" 14 127.0.0.1:6379> SINTER set set2 15 1) "member2" 16 127.0.0.1:6379> SUNION set set2 17 1) "member4" 18 2) "member1" 19 3) "member3" 20 4) "member2" 21 127.0.0.1:6379> SCARD set 22 (integer) 2 23 127.0.0.1:6379> SDIFFSTORE set3 set set2 24 (integer) 1 25 127.0.0.1:6379> SMEMBERS set3 26 1) "member1" 27 127.0.0.1:6379> SRANDMEMBER set2 28 "member3" 29 # 為正的時候最多將set中所有元素返回 30 127.0.0.1:6379> SRANDMEMBER set2 5 31 1) "member4" 32 2) "member3" 33 3) "member2" 34 # 為負的時候返回絕對值個數的元素,並且可能相同 35 127.0.0.1:6379> SRANDMEMBER set2 -5 36 1) "member3" 37 2) "member4" 38 3) "member2" 39 4) "member2" 40 5) "member3" 41 127.0.0.1:6379> SPOP set2 42 "member2" 43 127.0.0.1:6379> SMEMBERS set2 44 1) "member4" 45 2) "member3"
有序集合類型:
默認按照score升序排列
ZADD key score member [score member ...]
ZSCORE key member
ZRANGE key start stop [withscores] 其中的start stop表示下標
ZREVRANGE key start stop [withscores]
ZRANGEBYSCORE key min max [withscores] [limit offset count] 獲得指定分數范圍的元素 默認是包含min和max 如果不想包含某一個界,請在值前加 ( eg : zrangebyscore zset1 70 (100 withscores
且 min和max 可以使用 +inf 或者 -inf 表示正無窮大和負無窮大 后面的limit offset count 相當於sql中的分頁查詢
ZREVRANGEBYSCORE key max min [withscores] [limit offset count] 需要注意此時 max和min的位置調換了
ZINCRBY key increment member 給特定元素增加分數
ZCARD key
ZCOUNT key min max 這里是統計在min和max之間的元素個數
ZREM key member [member ...]
ZREMRANGEBYRANK key start stop 刪除固定下標范圍的元素
ZREMRANGEBYSCORE key min max 刪除分數范圍內的元素
ZRANK key member 得到對應元素的下標,如果不存在返回 nil
ZREVRANK key member
ZINTERSTORE destination numkeys key [key ...] [weights weight [weight...]] [AGGREGATE SUM|MIN|MAX] 和sinterstore差不多,區別在於weights參數指定權重,指定之后對應的集合中的值要乘以權重
並且 AGGREGATE 參數指定新集合的元素值來源方式,默認為sum,即為兩者之和 numkeys指定要處理的集合個數
同理 有 ZUNIONSTORE 這里不再贅述 (PS: 沒有ZDIFFSTORE)
命令的使用情況如下:

1 127.0.0.1:6379> ZADD key 1 member1 2 member2 3 member3 4 member3 2 (integer) 3 3 127.0.0.1:6379> ZADD key 1 member1 2 member2 3 member3 4 member4 4 (integer) 1 5 127.0.0.1:6379> ZSCORE key member1 6 "1" 7 127.0.0.1:6379> ZRANGE key 0 -1 8 1) "member1" 9 2) "member2" 10 3) "member3" 11 4) "member4" 12 127.0.0.1:6379> zrange key 1 2 13 1) "member2" 14 2) "member3" 15 127.0.0.1:6379> ZREVRANGE key 1 2 WITHSCORES 16 1) "member3" 17 2) "3" 18 3) "member2" 19 4) "2" 20 127.0.0.1:6379> ZRANGEBYSCORE key 1 3 WITHSCORES LIMIT 0 2 21 1) "member1" 22 2) "1" 23 3) "member2" 24 4) "2" 25 # 注意反向的時候min和max的下標也要換過來 26 127.0.0.1:6379> ZREVRANGEBYSCORE key 1 3 WITHSCORES LIMIT 0 2 27 (empty list or set) 28 127.0.0.1:6379> ZREVRANGEBYSCORE key 3 1 WITHSCORES LIMIT 0 2 29 1) "member3" 30 2) "3" 31 3) "member2" 32 4) "2" 33 127.0.0.1:6379> ZINCRBY key 2 member3 34 "5" 35 127.0.0.1:6379> ZCARD key 36 (integer) 4 37 127.0.0.1:6379> ZCOUNT key 3 1 38 (integer) 0 39 127.0.0.1:6379> zcount key 1 3 40 (integer) 2 41 127.0.0.1:6379> ZREM key member1 42 (integer) 1 43 127.0.0.1:6379> ZREMRANGEBYRANK key 0 0 44 (integer) 1 45 127.0.0.1:6379> zrange key 0 -1 46 1) "member4" 47 2) "member3" 48 127.0.0.1:6379> ZREMRANGEBYSCORE key 4 4 49 (integer) 1 50 127.0.0.1:6379> zrange key 0 -1 51 1) "member3" 52 127.0.0.1:6379> zrange key 0 -1 WITHSCORES 53 1) "member3" 54 2) "5" 55 127.0.0.1:6379> zadd zkey2 1 member3 2 member4 56 (integer) 2 57 127.0.0.1:6379> ZINTERSTORE key3 2 key zkey2 58 (integer) 1 59 127.0.0.1:6379> zrange key3 0 -1 WITHSCORES 60 1) "member3" 61 2) "6" 62 127.0.0.1:6379> ZUNIONSTORE key3 2 key zkey2 AGGREGATE MAX 63 (integer) 2 64 127.0.0.1:6379> zrange key3 0 -1 WITHSCORES 65 1) "member4" 66 2) "2" 67 3) "member3" 68 4) "5"