標籤:分布 並集 基本 賦值 lan sha dict hex exp
Redis:Redis是什麼:
REmote DIctionary Server(遠程字典伺服器)
是完全開源免費的,用C語言編寫的,遵守BSD協議,是一個高效能的(Key-Value)分布式記憶體資料庫。
基於記憶體運行並支援持久化的NoSQL資料庫,是當前最熱門的NoSQL資料庫之一,也被人稱為資料結構伺服器。
Redis的三個特點:
1)Redis支援資料持久化,可以將記憶體中的資料保持在磁碟中,重啟的時候可以再次載入進行使用
2)Redis不僅僅支援簡單的key-value類型的資料,同時還提供list、set、zset、hash等資料結構的儲存
3)Redis支援資料的備份,即master-slave模式的資料備份
Redis能幹啥:
1)記憶體儲存和持久化:redis支援非同步將記憶體中的資料寫到硬碟上,同時不影響繼續服務。
2)取最新記錄。如:將最新的10條評論的ID放在Redis的List集合裡面。
3)類比類似於HttpSession這種需要設定到期時間的功能
4)發布、訂閱訊息系統
5)定時器、計數器
Redis基本命令及簡單示範:
啟動服務端: redis-server
串連用戶端: redis-cli -p 6379(連接埠)
存: set 鍵 值
取: get 鍵
查看: keys 匹配
清空當前庫: FLUSHDB
清空所有庫: FLUSHALL
選擇庫: select 座標
Key的命令
1)判斷是否存在
EXISTS 鍵
2)查詢當前庫的key
keys (匹配)
3)移動key
move 鍵 庫號
4)為給定的key設定到期時間
expire 鍵 秒鐘
5)查看還有多少秒到期,-1表示永不到期,-2表示已到期
ttl 鍵
6)查看你的key是什麼類型
type 鍵
7)刪除鍵
del 鍵
五大常用類型String(字串)
string是redis最基本的類型,string類型是二進位安全的。可以包含任何資料。比如jpg圖片或者序列化對象。一個redis字串value最多可以是512M。
1)追加
append 鍵 內容
2)獲得字串長度
strlen 鍵
3)針對數位操作(一定要是數字)
增加1: incr 鍵
減少1: decr 鍵
增加某值: incrby 鍵 值
減少某值: decrby 索引值 值
4)截取操作
getrange 鍵 起始座標 結束座標(-1表示全部)
5)範圍替換
setrange 建 起始座標 替換內容
6)建立的時候設定到期時間(set with expire)
建立並設定:setex 鍵 秒速 值
7)不存在才能建立(存在則不會建立)(set if not exist)
setnx 鍵 值
8)建立多個和擷取多個 mset/mget
msetnx(不存在才建立成功)
9)先擷取再改值 getset
List(列表)
底層是個鏈表
1)lpush/rpush/lrange
2)左出右出 lpop/rpop
3)按座標擷取元素 lindex 鍵 下標序號
4)擷取集合長度 llen 鍵
5)刪除N個值 lrem 鍵 個數 值
6)截取指定範圍的值後再賦值給key ltrim key 開始位置 結束位置
7)轉移1個元素 rpoplpush 原列表 目的列表
8)替換某個位置的值 lset key index value
8)在某個值旁邊插入某個值 linsert key before/after 值1 值2
總結:
一、鍵不存在,建立新的鏈表,鍵已存在,新增內容。
二、沒有值則對應鍵也消失
三、對頭位置處理快,中間位置很尷尬~
Set(集合)
Redis的Set是string類型的無序集合,它是通過HashTable實現的
1)插入 set key value1/value2/value3(value重複有且只添加一個)
2)查看 smembers key
3)存在多少個某值 sismember key value
4)擷取集合裡面的元素個數 scard key
5)刪除集合中元素 srem key value
6)某個整數(隨機出幾個數) srandmember key 個數
7)隨機出棧 spop key
8)將key1的某個值賦給key2 smove key1 key2 value
9)數字集合類的處理
差集:sdiff 源key 目標key
交集:sinter 源key 目標key
並集:sunion 源key 目標key
Hash(雜湊)
類似於java的Map
Redis hash 是一個索引值對集合。是一個string類型的field和value的映射表,hash特別適合用於儲存物件
1)hset/mget/hmset/hmget/hgetall/hdel
2)查詢長度 hlen
3)某key是否存在某key hexists key1 key2
4)擷取所有key hkeys key
5)擷取所有value hvals key
6)加法 hincrby/hincrbyfloat
7)存在則賦值 hsetnx key主 key子 value
Zset(sorted set:有序集合)
Redis zset 和 set 一樣也是string類型元素的集合,且不允許重複的成員
不同的是每個元素都會關聯一個double類型的分數
redis正式通過分數來為集合中的成員進行從小到大的排序。zset的成員是唯一的,但分數(score)卻可以重複。
1)zadd key 分數1 value1 分數2 value2
2)擷取值 zrange key 起始位置 結束位置
3)連值帶分數的擷取 zrange key 起始位置 結束位置 withscores
4)根據分數範圍來擷取 zrangebyscore key 開始分數 結束分數
註:給結束分數帶 ( 表示不包含
+limit 起始位移量 截取個數
5)某分數下對應的value值,刪除元素 zrem key
6)擷取個數 zcard
7)擷取分數區間個數 zcount key 開始分數 結束分數
8)根據值擷取下標 zrank key value
9)根據值擷取分數 zscore key value
10)逆序擷取下標 zrevrank key value
11)逆序輸出值 zrevrange key 開始位置 結束位置
12)逆序分數擷取值 zrevrangebyscore key 高分數 低分數
哪裡可以獲得redis常見資料類型操作命令
http://redisdoc.com/
Redis:基礎知識及其常用資料類型和關鍵字