Redis:基礎知識及其常用數據類型和關鍵字
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:基礎知識及其常用數據類型和關鍵字