Redis概述2

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
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容