1.Redis 數(shù)據(jù)類型
Redis支持五種數(shù)據(jù)類型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
1.String(字符串)
- string是redis最基本的類型,你可以理解成與Memcached一模一樣的類型,一個key對應一個value。
- string類型是二進制安全的。意思是redis的string可以包含任何數(shù)據(jù)。比如jpg圖片或者序列化的對象 。
- string類型是Redis最基本的數(shù)據(jù)類型,一個鍵最大能存儲512MB。
實例
redis 127.0.0.1:6379> SET name "runoob"
OK
redis 127.0.0.1:6379> GET name
"runoob"
2.Hash(哈希)
- Redis hash 是一個鍵值(key=>value)對集合。
- Redis hash是一個string類型的field和value的映射表,hash特別適合用于存儲對象。
redis> HMSET myhash field1 "Hello" field2 "World"
"OK"
redis> HGET myhash field1
"Hello"
redis> HGET myhash field2
"World"
以上實例中 hash 數(shù)據(jù)類型存儲了包含用戶腳本信息的用戶對象。 實例中我們使用了 Redis HMSET, HGETALL 命令,user:1 為鍵值。
每個 hash 可以存儲 232 -1 鍵值對(40多億)。
List(列表)
3.List(列表)
- Redis 列表是簡單的字符串列表,按照插入順序排序。你可以添加一個元素到列表的頭部(左邊)或者尾部(右邊)
redis 127.0.0.1:6379> lpush runoob redis
(integer) 1
redis 127.0.0.1:6379> lpush runoob mongodb
(integer) 2
redis 127.0.0.1:6379> lpush runoob rabitmq
(integer) 3
redis 127.0.0.1:6379> lrange runoob 0 10
1) "rabitmq"
2) "mongodb"
3) "redis"
redis 127.0.0.1:6379>
4.Set(集合)
- Redis的Set是string類型的無序集合。
- 集合是通過哈希表實現(xiàn)的,所以添加,刪除,查找的復雜度都是O(1)。
sadd 命令
添加一個string元素到,key對應的set集合中,成功返回1,如果元素已經(jīng)在集合中返回0,key對應的set不存在返回錯誤。
sadd key member
實例
redis 127.0.0.1:6379> sadd runoob redis
(integer) 1
redis 127.0.0.1:6379> sadd runoob mongodb
(integer) 1
redis 127.0.0.1:6379> sadd runoob rabitmq
(integer) 1
redis 127.0.0.1:6379> sadd runoob rabitmq
(integer) 0
redis 127.0.0.1:6379> smembers runoob
1) "rabitmq"
2) "mongodb"
3) "redis"
以上實例中 rabitmq 添加了兩次,但根據(jù)集合內(nèi)元素的唯一性,第二次插入的元素將被忽略。
集合中最大的成員數(shù)為 232 - 1(4294967295, 每個集合可存儲40多億個成員)。
5.zset(sorted set:有序集合)
- Redis zset 和 set 一樣也是string類型元素的集合,且不允許重復的成員。
- 不同的是每個元素都會關聯(lián)一個double類型的分數(shù)。redis正是通過分數(shù)來為集合中的成員進行從小到大的排序。
- zset的成員是唯一的,但分數(shù)(score)卻可以重復。
zadd 命令
添加元素到集合,元素在集合中存在則更新對應score
zadd key score member
實例
redis 127.0.0.1:6379> zadd runoob 0 redis
(integer) 1
redis 127.0.0.1:6379> zadd runoob 0 mongodb
(integer) 1
redis 127.0.0.1:6379> zadd runoob 0 rabitmq
(integer) 1
redis 127.0.0.1:6379> zadd runoob 0 rabitmq
(integer) 0
redis 127.0.0.1:6379> ZRANGEBYSCORE runoob 0 1000
1) "redis"
2) "mongodb"
3) "rabitmq"
2.redis keys命令
| 1 | DEL key |
|---|---|
| 該命令用于在 key 存在時刪除 key。 | |
| 2 | DUMP key |
| 序列化給定 key ,并返回被序列化的值。 | |
| 3 | EXISTS key |
| 檢查給定 key 是否存在。 | |
| 4 | EXPIRE key seconds |
| 為給定 key 設置過期時間。 | |
| 5 | EXPIREAT key timestamp |
| EXPIREAT 的作用和 EXPIRE 類似,都用于為 key 設置過期時間。 不同在于 EXPIREAT 命令接受的時間參數(shù)是 UNIX 時間戳(unix timestamp)。 | |
| 6 | PEXPIRE key milliseconds |
| 設置 key 的過期時間以毫秒計。 | |
| 7 | PEXPIREAT key milliseconds-timestamp |
| 設置 key 過期時間的時間戳(unix timestamp) 以毫秒計 | |
| 8 | KEYS pattern |
| 查找所有符合給定模式( pattern)的 key 。 | |
| 9 | MOVE key db |
| 將當前數(shù)據(jù)庫的 key 移動到給定的數(shù)據(jù)庫 db 當中。 | |
| 10 | PERSIST key |
| 移除 key 的過期時間,key 將持久保持。 | |
| 11 | PTTL key |
| 以毫秒為單位返回 key 的剩余的過期時間。 | |
| 12 | TTL key |
| 以秒為單位,返回給定 key 的剩余生存時間(TTL, time to live)。 | |
| 13 | RANDOMKEY |
| 從當前數(shù)據(jù)庫中隨機返回一個 key 。 | |
| 14 | RENAME key newkey |
| 修改 key 的名稱 | |
| 15 | RENAMENX key newkey |
| 僅當 newkey 不存在時,將 key 改名為 newkey 。 | |
| 16 | TYPE key |
| 返回 key 所儲存的值的類型。 |
3.string
string是redis最基本的類型
最大能存儲512MB數(shù)據(jù)
string類型是二進制安全的,即可以為任何數(shù)據(jù),比如數(shù)字、圖片、序列化對象等
命令
- 設置
設置鍵值
set key value
設置鍵值及過期時間,以秒為單位
SETEX key seconds value
設置多個鍵值
MSET key value [key value ...]
- 獲取
根據(jù)鍵獲取值,如果不存在此鍵則返回nil
GET key
根據(jù)多個鍵獲取多個值
MGET key [key ...]
- 運算
要求:值是數(shù)字
將key對應的value加1
INCR key
將key對應的value加整數(shù)
INCRBY key increment
將key對應的value減1
DECR key
將key對應的value減整數(shù)
DECRBY key decrement
- 其它
追加值
APPEND key value
獲取值長度
STRLEN key
4.Hash
hash用于存儲對象,對象的格式為鍵值對
命令
設置
設置單個屬性
HSET key field value
設置多個屬性
HMSET key field value [field value ...]
獲取
獲取一個屬性的值
HGET key field
獲取多個屬性的值
HMGET key field [field ...]
獲取所有屬性和值
HGETALL key
獲取所有的屬性
HKEYS key
返回包含屬性的個數(shù)
HLEN key
獲取所有值
HVALS key
其它
判斷屬性是否存在
HEXISTS key field
刪除屬性及值
HDEL key field [field ...]
返回值的字符串長度
HSTRLEN key field
5.list
列表的元素類型為string
按照插入順序排序
在列表的頭部或者尾部添加元素
命令
設置
在頭部插入數(shù)據(jù)
LPUSH key value [value ...]
在尾部插入數(shù)據(jù)
RPUSH key value [value ...]
在一個元素的前|后插入新元素
LINSERT key BEFORE|AFTER pivot value
設置指定索引的元素值
索引是基于0的下標
索引可以是負數(shù),表示偏移量是從list尾部開始計數(shù),如-1表示列表的最后一個元素
LSET key index value
獲取
移除并且返回 key 對應的 list 的第一個元素
LPOP key
移除并返回存于 key 的 list 的最后一個元素
RPOP key
返回存儲在 key 的列表里指定范圍內(nèi)的元素
start 和 end 偏移量都是基于0的下標
偏移量也可以是負數(shù),表示偏移量是從list尾部開始計數(shù),如-1表示列表的最后一個元素
LRANGE key start stop
其它
裁剪列表,改為原集合的一個子集
start 和 end 偏移量都是基于0的下標
偏移量也可以是負數(shù),表示偏移量是從list尾部開始計數(shù),如-1表示列表的最后一個元素
LTRIM key start stop
返回存儲在 key 里的list的長度
LLEN key
返回列表里索引對應的元素
LINDEX key index
6.set
無序集合
元素為string類型
元素具有唯一性,不重復
命令
設置
添加元素
SADD key member [member ...]
獲取
返回key集合所有的元素
SMEMBERS key
返回集合元素個數(shù)
SCARD key
其它
求多個集合的交集
SINTER key [key ...]
求某集合與其它集合的差集
SDIFF key [key ...]
求多個集合的合集
SUNION key [key ...]
判斷元素是否在集合中
SISMEMBER key member
7.zset
sorted set,有序集合
元素為string類型
元素具有唯一性,不重復
每個元素都會關聯(lián)一個double類型的score,表示權重,通過權重將元素從小到大排序
元素的score可以相同
命令
設置
添加
ZADD key score member [score member ...]
獲取
返回指定范圍內(nèi)的元素
ZRANGE key start stop
返回元素個數(shù)
ZCARD key
返回有序集key中,score值在min和max之間的成員
ZCOUNT key min max
返回有序集key中,成員member的score值
ZSCORE key member