總體結構
Redis中的數據,總體上是鍵值對,不同數據類型指的是鍵值對中值的類型。
string類型
Redis中最基本的類型,它是key對應的一個單一值。二進制安全,不必擔心由於編碼等問題導致二進制數據變化。所以redis的string可以包含任何數據,比如jpg圖片或者序列化的對象(基本不會這麼幹)。Redis中一個字符串值的最大容量是512M。
list類型
Redis 列表是簡單的字符串列表,按照插入順序排序。你可以添加一個元素到列表的頭部(左邊)或者尾部(右邊)。說明它的底層是基於鏈表實現的,所以它操作時頭尾效率高,中間效率低。
set類型
Redis的set是string類型的無序集合。它是基於哈希表實現的。
hash類型
本身就是一個鍵值對集合。可以當做Java中的Map<String,String>對待。
zset類型
Redis zset 和 set 一樣也是string類型元素的集合,且不允許重複的成員。不同的是每個元素都會關聯一個double類型的分數。redis正是通過分數來爲集合中的成員進行從小到大的排序。zset的成員是唯一的,但分數(score)卻可以重複。
基本操作
Redis默認有16個數據庫。
115 # Set the number of databases. The default database is DB 0, you can select
116 # a different one on a per-connection basis using SELECT where
117 # dbid is a number between 0 and ‘databases’-1
118 databases 16
使用select進行切換,數據庫索引從0開始
## 數據庫切換
select index
## 查看數據庫長度
dbsize
Key簡單操作
●KEYS PATTERN
●TYPE KEY
返回KEY對應的值的類型
●MOVE KEY DB
把一組鍵值對數據移動到另一個數據庫中
●DEL KEY [KEY ...]
根據KEY進行刪除,至少要指定一個KEY
●EXISTS KEY
檢查指定的KEY是否存在。指定一個KEY時,存在返回1,不存在返回0。可以指定多個,返回存在的KEY的數量。
●RANDOMKEY
在現有的KEY中隨機返回一個
●RENAME KEY NEWKEY
重命名一個KEY,NEWKEY不管是否是已經存在的都會執行,如果NEWKEY已經存在則會被覆蓋。
●RENAMENX KEY NEWKEY
只有在NEWKEY不存在時能夠執行成功,否則失敗
●TTL KEY
以秒爲單位查看KEY還能存在多長時間
●EXPIRE KEY SECONDS
給一個KEY設置在SECONDS秒後過期,過期會被Redis移除。
●PERSIST KEY
移除過期時間,變成永久key
String簡單操作
●SET KEY VALUE [EX SECONDS] [PX MILLISECONDS] [NX|XX]
給KEY設置一個string類型的值。
EX參數用於設置存活的秒數。
PX參數用於設置存活的毫秒數。
NX參數表示當前命令中指定的KEY不存在才行。
XX參數表示當前命令中指定的KEY存在才行。
●GET KEY
根據key得到值,只能用於string類型。
●APPEND KEY VALUE
把指定的value追加到KEY對應的原來的值後面,返回值是追加後字符串長度
●STRLEN KEY
直接返回字符串長度
●INCR KEY
自增1
●DECR KEY
自減1
●INCRBY KEY INCREMENT
原值+INCREMENT
●DECRBY KEY DECREMENT
原值-DECREMENT
●GETRANGE KEY START END
從字符串中取指定的一段
●SETRANGE KEY OFFSET VALUE
從offset開始使用VALUE進行替換
●SETEX KEY SECONDS VALUE
設置KEY,VALUE時指定存在秒數
●SETNX KEY VALUE
新建字符串類型的鍵值對
●MSET KEY VALUE [KEY VALUE ...]
一次性設置一組多個鍵值對
●MGET KEY [KEY ...]
一次性指定多個KEY,返回它們對應的值,沒有值的KEY返回值是(nil)
●MSETNX KEY VALUE [KEY VALUE ...]
一次性新建多個值
●GETSET KEY VALUE
設置新值,同時能夠將舊值返回
list簡單操作
●LPUSH key value [value ...]
●RPUSH key value [value ...]
●LRANGE key start stop
根據list集合的索引打印元素數據
正着數:0,1,2,3,...
倒着數:-1,-2,-3,...
●LLEN key
●LPOP key
從左邊彈出一個元素。
彈出=返回+刪除。
●RPOP key
從右邊彈出一個元素。
●RPOPLPUSH source destination
從source中RPOP一個元素,LPUSH到destination中
●LINDEX key index
根據索引從集合中取值
●LINSERT key BEFORE|AFTER pivot value
在pivot指定的值前面或後面插入value
●LPUSHX key value
只能針對存在的list執行LPUSH
●LREM key count value
根據count指定的數量從key對應的list中刪除value
●LSET key index value
把指定索引位置的元素替換爲另一個值
●LTRIM key start stop
僅保留指定區間的數據,兩邊的數據被刪除
set簡單操作
●SADD key member [member ...]
●SMEMBERS key
●SCARD key
返回集合中元素的數量
●SISMEMBER key member
檢查當前指定member是否是集合中的元素
●SREM key member [member ...]
從集合中刪除元素
●SINTER key [key ...]
將指定的集合進行“交集”操作
集合A:a,b,c
集合B:b,c,d
交集:b,c
●SINTERSTORE destination key [key ...]
取交集後存入destination
●SDIFF key [key ...]
將指定的集合執行“差集”操作
集合A:a,b,c
集合B:b,c,d
A對B執行diff:a
相當於:A-交集部分
●SDIFFSTORE destination key [key ...]
●SUNION key [key ...]
將指定的集合執行“並集”操作
集合A:a,b,c
集合B:b,c,d
並集:a,b,c,d
●SUNIONSTORE destination key [key ...]
●SMOVE source destination member
把member從source移動到destination
●SPOP key [count]
從集合中隨機彈出count個數量的元素,count不指定就彈出1個
●SRANDMEMBER key [count]
從集合中隨機返回count個數量的元素,count不指定就返回1個
●SSCAN key cursor [MATCH pattern] [COUNT count]
基於遊標的遍歷
Hash簡單操作
●HSET key field value
●HGETALL key
●HGET key field
●HLEN key
●HKEYS key
●HVALS key
●HEXISTS key field
●HDEL key field [field ...]
●HINCRBY key field increment
●HMGET key field [field ...]
●HMSET key field value [field value ...]
●HSETNX key field value
zset操作
●ZADD key [NX|XX] [CH] [INCR] score member [score member ...]
●ZRANGE key start stop [WITHSCORES]
●ZCARD key
●ZSCORE key member
●ZINCRBY key increment member
●ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
在分數的指定區間內返回數據
●ZRANK key member
先對分數進行升序排序,返回member的排名
●ZREM key member [member ...]