Redis的五大數(shù)據(jù)類型
-
String(字符串)
-
string
是redis
最基本的類型,你可以理解成與Memcached
一模一樣的類型,一個key
對應一個value
。string
類型是二進制安全的。意思是redis
的string
可以包含任何數(shù)據(jù)。比如jpg圖片或者序列化的對象 。 -
string
類型是Redis
最基本的數(shù)據(jù)類型,一個redis
中字符串value
最多可以是512M
-
-
Hash(哈希,類似java里的Map)
-
Redis hash
是一個鍵值對集合。Redis hash
是一個string
類型的field
和value
的映射表,hash特別適合用于存儲對象。類似Java 里面的Map<String,Object>
-
-
List(列表)
-
Redis
列表是簡單的字符串列表,按照插入順序排序。你可以添加一個元素導列表的頭部(左邊)或者尾部(右邊)。它的底層實際是個鏈表
-
-
Set(集合)
-
Redis
的Set
是string類型的無序集合。它是通過HashTable實現(xiàn)實現(xiàn)的。
-
-
Zset(sorted set:有序集合)
-
Redis zset
和set
一樣也是string
類型元素的集合,且不允許重復的成員。 - 不同的是每個元素都會關聯(lián)一個double類型的分數(shù)。
- redis正是通過分數(shù)來為集合中的成員進行從小到大的排序。zset的成員是唯一的,但分數(shù)(score)卻可以重復。
-
——————————————————————————————
Redis 鍵(key)
- **keys * **:查詢當前數(shù)據(jù)庫存在的所有key(生產中不要輕易使用, 可以加一些通配符
keys k?
) - exists key:的名字,判斷某個key是否存在,返回數(shù)量值
- move key db:當前庫就沒有了,被移除了。移到目標庫中去了
- expire key 秒鐘:為給定的key設置過期時間
- ttl key: 查看還有多少秒過期,-1表示永不過期,-2表示已過期
- type key: 查看你的key是什么類型
Redis字符串(String)
- 主要用于:單值單value
- 常用命令—1:
set/get/del(刪除)/append(追加)/strlen(長度)
-
del
: 該命令可以刪除多條。
-
常用一 | center
- 常用命令-2:
Incr/decr/incrby/decrby(一定要是數(shù)字才能進行加減)
- 相當于Oracle中的SEQUENCE-但是必須是數(shù)字才能加減
常用二 | center
- 常用命令-3:
getrange/setrange
-
getrange
:獲取指定區(qū)間范圍內的值,類似between......and的關系 - 從零到負一表示全部
-
setrange
設置指定區(qū)間范圍內的值,格式是setrange key
值 具體值
-
常用三 | center
- 常用命令-4:
setex(set with expire)鍵秒值/setnx(set if not exist)
- setex:設置帶過期時間的key,動態(tài)設置。setex 鍵 秒值 真實值
常用四 | center
- 常用命令-5:
mset/mget(批量操作set、get)/msetnx
-
mset
:同時設置一個或多個 key-value 對。 -
msetnx
:同時設置一個或多個 key-value 對,當且僅當所有給定 key 都不存在。
-
常用五 | center
- 常用命令-6:
getset(先get再set)
-
getset
: 將給定 key 的值設為 value ,并返回 key 的舊值(old value)。 - 簡單一句話,先get然后立即set
-
常用六 | center
Redis列表(List)
- 主要用于:單值多value
- 常用命令-1:
lpush/rpush/lrange
- 上文中提到過,list 底層是鏈表,所以lpush 和 rpush 就是分別從鏈表的頭和為插入
常用命令-1 | center
- 常用命令-2:
lpop/rpop
常用命令-2 | center
- 常用命令-3:
lindex
,按照索引下標獲得元素(從上到下)
常用命令-3 | center
- 常用命令-4:
llen key
獲取list
長度 - 常用命令-5:
lrem key
刪list 中的N個value
常用命令-5 | center
- 常用命令-6:
ltrim key 開始index 結束index
, 截取指定范圍的值后再賦值給原來key,-
ltrim
:截取指定索引區(qū)間的元素,格式是ltrim list的key 起始索引 結束索引
-
常用命令-6 | center
- 常用命令-7:
rpoplpush 源列表 目的列表
- 移除列表的最后一個元素,并將該元素添加到另一個列表并返回
常用命令-7 | center
- 常用命令-8:
lset key index value
- 向 key 中 index 位置 修改值為 value
常用命令-8 | center
- 常用命令-9:
linsert key before/after 值1 值2
- 在list某個已有值的前后再添加具體值
常用命令-9 | center
-
性能總結
- 它是一個字符串鏈表,left、right都可以插入添加;
- 如果鍵不存在,創(chuàng)建新的鏈表;
- 如果鍵已存在,新增內容;
- 如果值全移除,對應的鍵也就消失了。
- 鏈表的操作無論是頭和尾效率都極高,但假如是對中間元素進行操作,效率就很慘淡了。
Redis集合(Set)
- 主要用于: 單值多value,同一個Key不能出現(xiàn)重復元素
- 常用命令-1:
sadd/smembers/sismember
常用命令-1 | center
- 常用命令-2:
scard,獲取集合里面的元素個數(shù)
常用命令-2 | center
- 常用命令-3:
srem key value 刪除集合中元素
常用命令-3 | center
- 常用命令-4:
srandmember key 某個整數(shù)
- 從set集合里面隨機取出2個
- 如果超過最大數(shù)量就全部取出,
- 如果寫的值是負數(shù),比如-3 ,表示需要取出3個,但是可能會有重復值。
常用命令-4 | center
- 常用命令-5:
spop key
隨機出棧
常用命令-5 | center
- 常用命令-6:
smove key1 key2 value
在key1里某個值,將key1里的某個值賦給key2
常用命令-6 | center
- 數(shù)字集合類:
- 差集:
sdiff
- 交集:
sinter
- 并集:
sunion
- 差集:
數(shù)字集合類 | center
Redis哈希(Hash)
主要用于:
KV模式不變,但V是一個鍵值對
,對于Bean 的映射非常好**常用命令-1 **:
hset/hget/hmset/hmget/hgetall/hdel
常用命令-1 | center
- 常用命令-2:
hlen
- 獲取hash 長度
常用命令-2 | center
- 常用命令-3:
hexists key
在key里面的某個值的key
常用命令-3 | center
- 常用命令-4:
hkeys/hvals
- 獲取key 和 valu 的集合
常用命令-4 | center
- 常用命令-5:
hincrby/hincrbyfloat
常用命令-5 | center
- 常用命令-6:
hsetnx
- 不存在賦值,存在了無效。
常用命令-6 | center
Redis有序集合Zset(sorted set)
在set基礎上,加一個score值。之前set是k1 v1 v2 v3,現(xiàn)在zset是k1 score1 v1 score2 v2
常用命令-1:
zadd/zrange
Withscores
常用命令-1 | center
- 常用命令-2:
zrangebyscore key 開始score 結束score
常用命令-2 | center
- 常用命令-3:
zrem key 某score下對應的value值
- zrem key score某個對應值,可以是多個值
常用命令-3 | center
- 常用命令-4:
zcard/zcount key score區(qū)間/zrank key values值,獲得下標值/zscore key 某分數(shù)對應值
zcard :獲取集合中元素個數(shù)
-
zcount
:獲取分數(shù)區(qū)間內元素個數(shù),zcount key 開始分數(shù)區(qū)間 結束分數(shù)區(qū)間 -
zrank
: 獲取value在zset中的下標位置 -
zscore
:按照值獲得對應的分數(shù)
常用命令-4 | center
- 常用命令-5:
zrevrank
、zrevrange
-
zrevrank
: 正序、逆序獲得下標索引值
-
常用命令-5 |center
- 常用命令-6:·
zrevrangebyscore key 結束score 開始score
-
zrevrangebyscore zset1 90 60 withscores
分數(shù)是反著來的
-
常用命令-6 | center