redis key+五大數據類+原子性

Redis的原子性

所謂原子操作是指不會被線程調度機制打斷的操作。這種操作一旦開始,就會一直運行到結束,中間不會有任何的context switch(切換到另一個線程)
1.在單線程中,能夠單條指令中完成的操作都可以認爲是原子操作,因爲中斷只能發生於指令之間
2.在多線程中,不能被其他進程(線程)打斷的操作叫做原子操作
redis單命令的原子性主要得益於redis的單線程

key

keys
查看當前庫所有的key
在這裏插入圖片描述
exists aa
判斷某個鍵是否存在,1爲存在,0爲不存在
在這裏插入圖片描述
flushdb
清空key
在這裏插入圖片描述
set k1 v1
添加鍵值對
ttl < key >
查看還有多少秒過期,-1表示永不過期,-2表示已過期
expire seconds
爲key設置過期時間
type < key >
查看鍵的類型
del < key >
刪除某個鍵
在這裏插入圖片描述
k1的有效時間已經沒了,所以被刪除了,k2是被手動刪除的

dbsize
查看當前數據庫中的key的數量

flushdb
清空當前庫

flushall
通殺所有庫

五大數據類型之String

String是Redis最基本的類型,可以理解成與Memcached的一模一樣的類型,一個key對應一個value
String類型是二進制安全的,意味着Redis的STring可以包含任何數據,比如JPG圖片或者序列化對象
String類型是Redis最基本的數據類型,一個Redis中字符串value最多可以是512M

get < key >
查詢對應的鍵值
在這裏插入圖片描述
setnx < key > < value >
只有在key不存在時設置key的值
在這裏插入圖片描述
strlen < key >
獲取值的長度
在這裏插入圖片描述
append < key > < value >
將value追加到原值的末尾
在這裏插入圖片描述
incr < key >
將key中存儲的數字值增1
只能對數字值操作,如果爲空,新增值爲1

decr < key >
將key中存儲的數字值減1
只能對數字值操作,如果爲空,新增值爲-1

incrby/decrby < key > <步長>
將key中存儲的數字值增減,自定義步長
在這裏插入圖片描述
mset k4 v4 k5 v5
同時設置一個或者多個k-v對

mget k1 k2 k4 k5
同時獲取一個或者多個value

msetnx k7 v666 k6 v6
同時設置一個或者多個k-v對 。並且僅當所有給定的key都不存在
在這裏插入圖片描述
getrange < key > <起始位置> <結束位置>
獲得值的範圍,類似java的substring

setrange < key > <起始位置> < value >
用value覆寫key所存儲的字符串值,從起始位置開始
在這裏插入圖片描述
setex k1 200 v999
設置鍵值的同時,設置過期時間,單位秒

getset k1 vnew1
以新換舊,設置了新值的同時獲得了舊值
在這裏插入圖片描述

五大數據類型之List

單鍵多值
redis列表是最簡單的字符串列表,按照插入順序排序,可以添加一個元素到列表的頭或者尾
底層實際是個雙向鏈表對兩端的操作性能很高,通過索引下標的操作中間的節點 性能會較差

lpush/rpush
從左邊/右邊插入一個或者多個值
lpush k2 v4 v5
rpush k2 555

lpop/rpop
從左邊/右邊吐出一個值
值在鍵在
lpop k2
在這裏插入圖片描述
rpoplpush key1 key2

從key1列表右邊吐出一個值,插入到key2列表的右邊
在這裏插入圖片描述
lrange k2 0 10
查看key對應的值,從第0個到第10個
在這裏插入圖片描述
lindex key index
按照索引下標取得元素(從右到左)
在這裏插入圖片描述
llen k3
獲得列表長度
在這裏插入圖片描述
linsert key before value newvalue
在value前面插入newvalue
linsert k3 before v3 v123
在這裏插入圖片描述
lrem key n value
從左邊刪除n個value
在這裏插入圖片描述

五大數據類型之Set

Redis set 對外提供的功能和list類似的一個列表功能,特殊之處是set可以自動去重,並且set提供了判斷某一個成員是否在一個set集合內的重要接口
Redis 的set是String類型的無序集合,它底層其實是一個value爲null的hash表,所以添加,刪除,查找的複雜度都是O(1)

sadd < key> < value1> < value2>
將一個或多個member元素加入到集合key中,已經存於集合的member元素被忽略
sadd k1 v1 v2 v3

smembers < key>
取出該集合的所有值
smembers k1

sismember < key> < value>
判斷集合key是否爲含有該value值,有返回1,沒有返回0
sismember k1 v3
在這裏插入圖片描述
scard < key>
返回集合的元素個數
scard k1
在這裏插入圖片描述
srem < key> < value1> < value2>
刪除集合中的元素
srem k1 v1

spop < key>
隨機從集合中吐出一個值
spop k1

srandmember < key> n
隨機從集合中取出n個值,不會從集合中刪除
srandmember k1 1
在這裏插入圖片描述
sinter < key1> < key2>
返回兩個集合的交集元素
sinter k1 k2

sunion < key1> < key2>
返回兩個集合的並集元素
sunion k1 k2

sdiff < key1> < key2>
返回兩個集合的差集元素
sdiff k1 k2
在這裏插入圖片描述

五大數據類型之Hash

redis hash是一個鍵值對集合
Redis hash是一個String類型的field和value的映射表,hash特別適用於存儲對象
類似於java裏面的Map<String,Object>

hset < key > < field > < value >
給key集合中的field鍵賦值value
hset k1 f1 v1

hget < key > < field >
從key集合field取出value
hget k1 f1

hmset < key > < field1 > < value1 > < field1 > < value1 >
批量設置hash值
hmset k1 f1 v1 f2 v2 f3 v3

hexists key field
查看哈希表key值中,給定的field是否存在
hexists k1 f2

hkeys < key >
列出該hash集合的所有field
hkeys k1

hvals < key >
列出該hash集合的所有value
hvals k1
在這裏插入圖片描述

hincrby < key > < field1 > < increment >
爲hash表key中的域field的值加上增量increment
hincrby k1 f1 fd12
在這裏插入圖片描述
hsetnx < key > < field > < value >
將哈希表key中的域field的值設置爲value,當且僅當field不存在
hsetnx k1 f1 456
在這裏插入圖片描述

五大數據類型之zset(sorted set)

Redis 有序結合Zset與普通集合set非常相似,是一個沒有重複數據的字符換集合,不同之處是有序集合的所有成員都關聯一個評分。根據評分從低到高進行排序,集合成員必須唯一,但是評分可以重複
因爲元素是有序的,所以可以根據評分或者次序獲取一個範圍的元素

zadd < key > < score1 > < value1 > < score2 > < value2 >
將一個或者多個member元素及其score值寫入有序列表key中
zadd k1 1 v1 2 v2 3 v3

**zrange < key > start stop [withscores] **
返回有序集key中,下標在start-stop之間的元素
帶WITHSCORE,可以讓分數和值一起返回到結果集
zrange k1 0 2 winthscores

zrangebyscore key min max [withscores] [limit offset count]
返回有序集key中,下所有score值介於min和max之間(包括min和max)的成員
有序集成員按搜查人值遞增排序
zrangebyscore k1 1 2 withscores
在這裏插入圖片描述
zrevrangebyscore key max min [withscores] [limit offset count]
同上,排序書序改爲從大到小
在這裏插入圖片描述
zincrby key increment value
爲元素的score加上增量
根據value來給score加值
在這裏插入圖片描述
zrem key value
刪除該集合下,指定值的元素

zcount key min max
統計該集合,分數區間內的元素個數

zrank key value
返回該值在集合中的排名,從0開始
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章