redis在國內被眾多的企業作為使用記憶體來實現高效能的io的解決方案。使用場景包括了資料庫,快取,訊息中介軟體等。支援多種型別的資料結構,以及提供持久化,lru,事務,負載均衡等多種功能
redis支援的資料結構包括了stirng、list、set、sorted set、hashes等多種形式
redis key值是二進位制安全的,意思是可以使用任何的二進位制序列作為key值,包括了空字串。
不宜設定太長的key,因為消耗記憶體,對查詢key的計算成本很高。
太短也不利於提高**的易讀性
基礎的get和set操作
set mykey myvalue
get mykey
set get的操作公升級版還有mset mget 批量賦值和批量取值
mset a 10 b 20 c 30
mget a b c
1) "10"
2) "20"
3) "30"
自增操作
set counter 100
incr counter (自增 counter++)
incrby counter 50 (自增50 counter+=50)
incr操作是乙個原子操作,可以多執行緒執行也不造成混亂,類似的還有decr、decrby
對鍵空間的操作
exists mykey(是否存在mykey)
del mykey(刪除)
type mykey(返回型別)
redis所有的key值都存在乙個預設的超期時間,預設情況下為-1,表示永不過期
使用expire mykey 10 可以設定過期時間
persist 命令可以去除過期時間
ttl mykey 可以檢視離過期時間還有多久
redis的list是基於linkedlist實現的,這個意味著redis 的list在頭部以及尾部新增或刪除資料是非常快的,缺點就是無法往中間插入資料,以及讀取中間的資料是非常的緩慢。
當需要快速訪問整個集合時,可以嘗試使用sorted set排序集合
list的基礎操作
list (也包括set、sorted set、hash)不需要建立或者刪除操作,當推入乙個值或者最後乙個值被推出時,list就會自動被建立或刪除
lpush mylist a (向左邊新增乙個新元素\向隊頭新增新元素)
rpush mylisy b (向右邊新增乙個新元素\向隊尾新增新元素)
rpush mylisy a b c d (批量操作)
rpop mylist(取出最後乙個元素並將元素從list中刪除)
lrange mylist 0 -1(取出從第0個元素到第-1個元素的所有值)
0表示第乙個元素,-1表示倒數第乙個元素(就是最後乙個元素),-2表示倒數第二個元素
ltrim mylist 0 2 (擷取從0到2的所有元素作為新的mylist)
list的阻塞操作
brpop和blpop ,可以指定在某一段時間內阻塞性的獲取資料,獲取不到資料就會一直阻塞,直到獲取成功或者超時。同時redis會為阻塞的消費者順序排隊
可以解決一些需要輪詢的場景的出現
hash類似於將map存入redis
hmset myhash username zhangsan password 123456
hget myhash username
> zhangsan
hget myhash password
> 123456
hgetall myhash
> "username"
> "zhangsan"
> "password"
> "123456"
hash可以便捷的儲存object
hash也可以對裡面單獨的域進行操作
如自增操作:
hincrby myhash birthyear 10
有乙個點需要注意的是,hash裡面的小的hash,被特殊的方式編碼,非常節約記憶體
set是string的無序列表,無法儲存相同的資料
常見的使用場景包括了判斷乙個元素是否存在,兩個set之間的交集、並集、差、獲取隨機元素等操作
讀取操作
sadd myset 1 2 3
smembers myset
>2
>1
>3
sismember myset 3 (是否存在元素3)
>1 (存在)
相當於乙個有序的set
在寫入資料的時候需要多寫入乙個得分的值
zadd myordersset 20 a
zadd myorderset 10 b
zadd myorderset 30 c
zrange myorderset 0 -1 (按得分公升序讀取從第0個元素到最後乙個元素)
> b
> a
> c
zrevrange myordereset 0 -1 (降序排序)
如果得分相同,會按照value的字元字典順序排序
zrangebyscore myorderset -inf 20(讀取小於等於20分的資料)
zremrangebyscore myorderset 10 20 (10分到20分的資料)
可以使用的場景包括排行榜等 redis學習(一)Redis入門簡介
redis 是完全開源免費的,遵守bsd協議,是乙個高效能的key value資料庫。redis 與其他 key value 快取產品有以下三個特點 tar zvxf redis 3.0 5.tar gzcd redis 3.0 5make redis server開啟之後如下圖所示 這種方式是啟動...
Redis入門學習
redis安裝 wget tar xzf redis 2.6.13.tar.gz cd redis 2.6.13 make redis啟動 src redis server redis 簡單測試 src redis cli redis set foo bar okredis get foo bar ...
redis入門學習
redis入門學習筆記 1.remote dictionary server redis a key value儲存系統 b 支援資料的持久化 c 支援資料的備份 d 讀寫速度快 e 所有操作都是原子的 2.資料型別 string hash list set zset a value為string型...