Redis

Redis:

Redis是一個開源的使用ANSI C語言編寫、支持網絡、可基於內存亦可持久化的日誌型、Key-Value數據庫,並提供多種語言的API。
Redis 的特性:

  1. redis支持數據的持久化,可以將內存中的數據保存在磁盤中,重啓的時候可以再次加載使用;
  2. redis不僅僅支持簡單的key:value類型的數據,同時還提供了,string.list, zset. set, hash,等數據結構的存儲。
  3. redis支持數據的備份,即master–slave模式的數據備份。
使用redis的優勢:
  1. 性能極高;redis能讀的速度是11萬次每秒,寫的速度是八萬一千次每秒81000
  2. 豐富的數據類型;redsi支持二進制案列的strings,lists,hashes,stes,以及ordered,sets數據類型的操作。
  3. 原子,redis的所有操作都死原子性的,同時redis還支持對幾個操作合併後的原子性執行。
  4. 豐富的特性,redis 還支持publish/subscribe,通知,key過期等特性。
redis的應用場景;
  1. 用來做緩存,redis的所有數據是放在內存中的;內存數據庫。
  2. 可以在某些特定應用場景下替代傳統的數據庫------比如社交類的應用。
  3. 在一些大型系統中巧妙的實現一些特定的功能,session共享,購物車;
    設置鍵值
主從概念

⼀個master可以擁有多個slave,⼀個slave⼜可以擁有多個slave,如此下去,形成了強⼤的多級服務器集羣架構
master用來寫數據,slave用來讀數據,經統計:網站的讀寫比率是10:1
通過主從配置可以實現讀寫分離

redis集羣搭建:

由於訪問量1000W過大的時候就有可能造成服務器掛掉或者自然災害導致數據的丟失;所以採用集羣

集羣是一組相互獨立的、通過高速網絡互聯的計算機,它們構成了一個組,並以單一系統的模式加以管理。一個客戶與集羣相互作用時,集羣像是一個獨立的服務器。集羣配置是用於提高可用性和可縮放性。

當請求到來首先由負載均衡服務器處理,把請求轉發到另外的一臺服務器上。

集羣組成:軟件層面;硬件層面。
軟件層面 一臺電腦,一臺電腦上啓動了多個redis服務
硬件層面;存在多臺實體電腦,每一臺實體電腦上都啓動了一個redis服務

string

set
setex
mset
append
get
mget
key
keys
exists
type
delete
expire
getrange
ttl

hash

hset
hmset
hkeys
hget
hmget
hvals
hdel

list

lpush
rpush
linsert
lrange
lset
lrem

set

sadd
smembers
srem

zset

zadd
zrange
zrangebyscore
zscore
zrem
zremrangebyscore

set key value

例1:設置鍵爲name值爲itcast的數據

set name itcast

設置鍵值及過期時間,以秒爲單位

setex key seconds value

例2:設置鍵爲aa值爲aa過期時間爲3秒的數據

setex aa 3 aa

設置多個鍵值

mset key1 value1 key2 value2 …

例3:設置鍵爲’a1’值爲’python’、鍵爲’a2’值爲’java’、鍵爲’a3’值爲’c’

mset a1 python a2 java a3 c

追加值

append key value

例4:向鍵爲a1中追加值’ haha’

append ‘a1’ ‘haha’

獲取:根據鍵獲取值,如果不存在此鍵則返回nil

get key

例5:獲取鍵’name’的值

get ‘name’

根據多個鍵獲取多個值

mget key1 key2 …

例6:獲取鍵a1、a2、a3’的值

mget a1 a2 a3

查找鍵,參數⽀持正則表達式

keys pattern

例1:查看所有鍵

keys *

例2:查看名稱中包含a的鍵

keys ‘a*’

判斷鍵是否存在,如果存在返回1,不存在返回0

exists key1

例3:判斷鍵a1是否存在

exists a1

查看鍵對應的value的類型

type key

例4:查看鍵a1的值類型,爲redis⽀持的五種類型中的⼀種

type a1

刪除鍵及對應的值

del key1 key2 …

例5:刪除鍵a2、a3

del a2 a3

設置過期時間,以秒爲單位

如果沒有指定過期時間則⼀直存在,直到使⽤DEL移除

expire key seconds

例6:設置鍵’a1’的過期時間爲3秒

expire ‘a1’ 3

查看有效時間,以秒爲單位

ttl key

例7:查看鍵’bb’的有效時間

ttl bb

哈希類型:

設置單個屬性

hset key field value

例1:設置鍵 user的屬性name爲itheima

hset user name itheima

例2:設置鍵u2的屬性name爲itcast、屬性age爲11

hmset u2 name itcast age 11

獲取指定鍵所有的屬性

hkeys key

例3:獲取鍵u2的所有屬性

hkeys u2

獲取⼀個屬性的值

hget key field

例4:獲取鍵u2屬性’name’的值

hget u2 ‘name’

獲取多個屬性的值

hmget key field1 field2 …

例5:獲取鍵u2屬性’name’、'age的值

hmget u2 name age

獲取所有屬性的值

hvals key

例6:獲取鍵’u2’所有屬性的值

hvals u2

刪除
刪除整個hash鍵及值,使⽤del命令
刪除屬性,屬性對應的值會被⼀起刪除

hdel key field1 field2 …

例7:刪除鍵’u2’的屬性’age’

hdel u2 age

list類型的 插入數據:

分別是 左邊 l 右邊 r
在左側插⼊數據

lpush key value1 value2 …

例1:從鍵爲’a1’的列表左側加⼊數據a 、 b 、c

lpush a1 a b c

在右側插⼊數據

rpush key value1 value2 …

例2:從鍵爲’a1’的列表右側加⼊數據0 1

rpush a1 0 1

在指定元素的前或後插⼊新元素

linsert key before或after 現有元素 新元素

例3:在鍵爲’a1’的列表中元素’b’前加⼊’3’

linsert a1 before b 3

返回列表⾥指定範圍內的元素

start、stop爲元素的下標索引
索引從左側開始,第⼀個元素爲0
索引可以是負數,表示從尾部開始計數,如-1表示最後⼀個元素
lrange key start stop

例4:獲取鍵爲’a1’的列表所有元素

lrange a1 0 -1

索引從左側開始,第⼀個元素爲0
索引可以是負數,表示尾部開始計數,如-1表示最後⼀個元素

lset key index value

例5:修改鍵爲’a1’的列表中下標爲1的元素值爲’z’

lset a 1 z

刪除
刪除指定元素

將列表中前count次出現的值爲value的元素移除
count > 0: 從頭往尾移除
count < 0: 從尾往頭移除
count = 0: 移除所有
lrem key count value

例6.1:向列表’a2’中加⼊元素’a’、‘b’、‘a’、‘b’、‘a’、‘b’

lpush a2 a b a b a b

例6.2:從’a2’列表右側開始刪除2個’b’

lrem a2 -2 b

例6.3:查看列表’py12’的所有元素

lrange a2 0 -1

set類型

⽆序集合
元素爲string類型
元素具有唯⼀性,不重複
說明:對於集合沒有修改操作
增加
添加元素

sadd key member1 member2 …

例1:向鍵’a3’的集合中添加元素’zhangsan’、‘lisi’、‘wangwu’

sadd a3 zhangsan sili wangwu

獲取
返回所有的元素

smembers key

例2:獲取鍵’a3’的集合中所有元素

smembers a3

刪除
刪除指定元素

srem key

例3:刪除鍵’a3’的集合中元素’wangwu’

srem a3 wangwu

zset類型

sorted set,有序集合
元素爲string類型
元素具有唯⼀性,不重複
每個元素都會關聯⼀個double類型的score,表示權重,通過權重將元素從⼩到⼤排序
說明:沒有修改操作
增加
添加

zadd key score1 member1 score2 member2 …

例1:向鍵’a4’的集合中添加元素’lisi’、‘wangwu’、‘zhaoliu’、‘zhangsan’,權重分別爲4、5、6、3

zadd a4 4 lisi 5 wangwu 6 zhaoliu 3 zhangsan

獲取
返回指定範圍內的元素
start、stop爲元素的下標索引
索引從左側開始,第⼀個元素爲0
索引可以是負數,表示從尾部開始計數,如-1表示最後⼀個元素

zrange key start stop

例2:獲取鍵’a4’的集合中所有元素

zrange a4 0 -1
返回score值在min和max之間的成員

zrangebyscore key min max

例3:獲取鍵’a4’的集合中權限值在5和6之間的成員

zrangebyscore a4 5 6

返回成員member的score值

zscore key member

例4:獲取鍵’a4’的集合中元素’zhangsan’的權重

zscore a4 zhangsan

刪除
刪除指定元素

zrem key member1 member2 …

例5:刪除集合’a4’中元素’zhangsan’

zrem a4 zhangsan

刪除權重在指定範圍的元素

zremrangebyscore key min max

例6:刪除集合’a4’中權限在5、6之間的元素

zremrangebyscore a4 5 6

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