redis資料庫 redis有以下三個特點 redis支持數據的持久化,可以將記憶體中的數據保存在磁碟中,重啟的時候可以再次載入進行使用 redis不僅僅支持簡單的key-value類型的數據,同時還提供list,set,zset,hash等數據結構的存儲 redis支持數據的備份,即master-s ...
redis資料庫
redis有以下三個特點
- redis支持數據的持久化,可以將記憶體中的數據保存在磁碟中,重啟的時候可以再次載入進行使用
- redis不僅僅支持簡單的key-value類型的數據,同時還提供list,set,zset,hash等數據結構的存儲
- redis支持數據的備份,即master-slave模式的數據備份
- 數據提供原子性操作
redis安裝與配置
redis數據類型
string(字元串),hash(哈希),list(列表),set(集合)及zset(sort set:有序集合)
-
redis 鍵(key)
- del key
刪除存在的key
- exists key
檢查給定的key是否存在
- keys pattern
正則匹配key名稱
- expire key
為給定的key設置過期時間,以秒計
- ttl key
查看key的剩餘生存時間/秒(TTL time to live)
- rename key newkey
修改key的名稱
- type key
放回key所存儲的值類型
- del key
-
String(字元串)
- 設置
- set key value
設置指定key的值
- mset key value[key value]
同時設置一個或多個key-value對
- setex key seconds value
將值key關聯到key,並將key的過期時間設置為 seconds 秒
- setns key value
只有在key不存在時設置key的值
- append key value
如果已經存在並且是一個字元串,該命令將指定的value追加到該key原來值(value)的末尾
- set key value
- 獲取
- get key
獲取指定key的值
- mget key1 [key2...]
獲取所有(一個或多個)給定key的值
- strlen key
放回key所存儲的字元串值得長度
- get key
- 設置
-
hash(哈希)
redis hash 是一個string類型的field和value的映射表,hash特別適合用用於存儲對象
redis中每個hash可以存儲 2^32 - 1 鍵值對(40多億)
- 判斷
- hexists key field
查看哈希表key中,指定的欄位是否存在
- hexists key field
- 獲取
- hkeys key
獲取哈希表中的所有值
- hlen key
獲取哈希表中欄位的數量
- hget key field
獲取存儲在哈希表中指定欄位的值
- hmget key field1 [field2]
獲取所有給定欄位的值
- hgetall key
獲取在哈希表中指定key的所有欄位和值
- hvals key
獲取哈希表中所有值
- hkeys key
- 設置
- hset key field value
將哈希表key中的欄位field的值設置為value
- hmset key field1 value1 [field2 value2]
同時將多個field-value(域-值)對設置到哈希表key中
- hset key field value
- 刪除
- hdel key field1 [field2...]
刪除一個或多個哈希表欄位
- hdel key field1 [field2...]
- 判斷
-
列表(list)
redis列表是簡單的字元串類表,按照插入順序排序。可以添加一個元素到類表的頭部(左邊)或尾部(右邊)
一個類表最多可以包含 2^32 -1個元素
-
插入
- lpush key value1 [value2...]
將一個或多個值插入到列表頭部
- rpush key value1 [value2...]
在列表中添加一個或多個值
- linset key before/after pivot value
在列表元素前或後插入元素(pivot指定列表中的元素,value準備插入的元素)
- lpush key value1 [value2...]
-
獲取
- lrange key start stop
獲取列表指定範圍內的元素(-1為最後一個)
- lindex key index
通過索引獲取列表中的元素
- llen key
獲取列表長度
- lpop key
移出並獲取列表的第一個元素
- lrange key start stop
- 修改
- lset key index value
通過索引設置列表元素的值
- lset key index value
-
刪除
- lrem key count value
通過索引設置列表元素的值
count>0:從頭往尾移除 count=0:從尾往頭移除 count<0:移除所有
- lrem key count value
-
-
列表和集合的區別
- list提供索引方式添加元素或獲取元素,set不提供
- list集合是有序存儲,set集合時無序存儲(存儲地址的有序、無序)
- list 可以存儲重覆的值,set不可以存儲重覆的值
- 在隨機遍歷中,set是根據hash值得大小遍歷,呈現出的值是有序
-
set(集合)
集合成員是唯一的
- 添加
- sadd key member1 [member2..]
- 獲取
- scard key
獲取集合的成員數
- smembers key
返回集合中的所有成員
- scard key
- 刪除
- srem key member1 [member2...]
- 添加
-
zset (有序集合)
每一個元素都會關聯一個double類型的score(權重)
- 添加
- zadd key score1 member1 [score2 member2...]
向有序集合添加一個或多個成員,或者更新已存在成員的score
- zadd key score1 member1 [score2 member2...]
- 獲取
- zcard key
獲取有序集合的成員數
- zrange key start stop
通過索引區間返回有序集合指定區間內的成員
- zrangebyscore key mix max
通過分數返回有序集合指定區間內的成員
- zscore key member
返回成員member的權重
- zcard key
- 刪除
- zrem key member1 [member2..]
刪除指定元素
- zremrangebyscore key min max
刪除權重在指定範圍的元素
- zrem key member1 [member2..]
- 添加
redis主從配置
-
主配置
- 修改etc/redis/redis.conf 中的 bind:主ip
-
從配置
- 複製主配置中的redis.conf文件 ===》 重命名 slave.conf
- 修改文件中的 bind:從ip
- slaveof:主ip:主埠 ===》主從備份
- port 從埠
-
查看主從關係
- redis-cli -h ip -p port info Replication
-
進入主從客戶端
- redis-cli -h ip -p port
-
主從配置應用
- 可以通過主配置添加修改內容,從配置讀取內容(負載均衡)
redis集群
一組相互獨立的,通過高速網路互聯的電腦,它們構成一個組,並以單一系統的模式加以管理
1. redis集群採用叫哈希槽的方式分配數據,redis cluster預設分配到16384個stost,當寫入數據:內部會自動匹配到對應的槽
2.redis集群會把數據存到一個master節點,然後在這個master和其對應的salve之間進行數據同步
3.必須要3個或3個以上節點才能創建集群
-
軟體層面
- 只有一臺主機,在這臺電腦上啟動多個redis服務
-
硬體層面
- 存在多台主機,每台主機上啟動一個或多個redis服務
-
集群節點配置
- 在/etc/redis 下創建 7000.conf
7000.conf文件中配置信息
1. port 7000 2. bind ip 3. dammonize yes 4. pidfile 7000.pid 5. cluster-enabled yes 6. cluster-config-file 70000_node.conf 7. cluster-node-timeout 15000 8. apendonly yes
- 其他主機創建 70001.conf ,配置同上,修改對應的內容
- 啟動服務
- sudo redis-sever ./7000.conf
- 查看集群
- ps aux | grep redis
- 看到關鍵字:cluster(集群)
- ps aux | grep redis
-
安裝環境依賴
- 安裝ruby環境
- sudo apt-get install ruby
- 創建集群
- redis-trib.rb create --replicas 1 ip1:port1 ip2:port2 ...
- 連接集群
- redis-cli -h ip -c -p port
- 安裝ruby環境