1. 程式人生 > >redis的基本命令和五大基本資料型別

redis的基本命令和五大基本資料型別

Redis的基本命令

關閉redis伺服器
1、直接殺死程序(不推薦)可能不會資料持久化
Kill-9 程序號
2、使用客戶端 執行 shutdown命令 會資料持久化(推薦)
./redis-cli shutdown
Redis有預設的16個數據庫
0-15號
使用圖形介面連線redis資料庫
防火牆開啟的狀態,外面的圖形介面不允許連線:
(1)關閉防火牆(推薦)
(2)開放埠
修改redis服務ip地址的繫結
預設繫結的是127.0.0.1 改成ip地址或者域名:192.168.59.150
基本命令:
1、選擇資料庫
通過資料庫的下標來選擇 select 0
2、檢視當前資料庫key值的數量
DBSIZE
3、檢視某個key儲存數值的資料型別
type key
4、清除該資料庫中所有的資料
FLUSHD
5、清除redis中所有的資料
flushADD

Redis的五大資料型別

Java連線Redis jdbc-redis技術
Jedis 匯入Jedis依賴

redis.clients
jedis
2.8.0

Jedis 連線池配置
最大連線數:連線池中連線存在最多的個數,如果訪問超過這個個數,多與的連線需要等待,連線池不會再建立新的連線
最大空閒數:池子中預設有5條連線 同時來了20個請求,連線池需要建立15條更多的連線,請求結束後,釋放這些連線。
最小空閒數:池子預設的連線個數
Jedis jedis = new Jedis(“192.168.59.150”, 6379);
jedis.set(“name”,”ji”);
String s = jedis.get(“name”);

維護redis key是有規範的
阿里巴巴規約
業務:物件:屬性名

1、String
增 : set
刪 :del
改 : 自增:incr 自減:decr 增加一個數 incrBy/decrBy
字串拼接append
查 : get

2、Hash
適用於儲存物件
增 hset hmset
刪hdel
改:增加數 對某個hash鍵進行拼接
查:hset hgetAll
3、List
底層使用連結串列實現 集合 增加和刪除速度比較快
有序的列表,按照插入小猴順序 可以重複的
4、Set
無序的,沒有重複的
5、sortSet
有序的,不可重複的
可做 淘寶搶購 秒殺
根據比分的權重實現有序
可做 遊戲排名

Redis 架構

Redis 是一個單執行緒的架構
單執行緒 和 多執行緒
單執行緒要比多執行緒安全性好,但是效率低
Redis是一個 單執行緒架構,為什麼速度還那麼快?
他是一個基於記憶體的,而一些普通關係型資料庫時基於硬碟的。
單執行緒避免了多執行緒cpu相互切換的消耗
集成了epoll技術(linux核心)作為多路複用I/o技術,所以他的讀取速度快
單執行緒非同步回撥
好處:使用它,就不用考慮現在高併發的問題

Redis的應用場景

1、String
應用於快取技術(加強版的mameche)
在訪問硬碟資料庫之前先訪問redis,如果redis有則直接返回,如果沒有就從硬盤裡那取,並存到redis,再將結果響應給請求
命中率:訪問通過了redis 就叫做命中,沒通過就直接從資料庫中取值,這樣情況就叫不命中
共享使用者的session
把session都存在redis裡面,可以實現多型伺服器資料共享。

實現計數功能:

實現網站的訪問數量統計
應用安全“限速”
設定鍵的過期時間
EXPIRE key 秒數
Ttl key 檢視某個鍵的剩餘時間
正整數:剩下的時間
-1:沒有設定過期時間
-2:過期了

List列表:
新聞列表
Set:不重複 無序
秒殺,搶購
sortSet: 有序不重複
遊戲排行榜
Hash
適用於儲存物件

Redis事務

什麼是事務:
一系列操作組成一個操作單元,要麼操作成功,要麼操作不成功
事務:ACID 原子性 一致性 隔離性 永續性
事務併發:髒讀 (幻讀 虛讀) 不可重複讀
解決事務併發安全問題:
隔離級別:
可重複讀(4級別) 解決了 不可重複讀
讀未提交:(1)
讀已提交:(2)zangdu7
序列化:(8)

事務傳播行為(7種)用:REQUIRED :事務沿用,沒用重建

Redis事務:
MULTI 開啟事務
將接下來的操作 放到佇列中等待被執行
EXEC 提交事務(執行)
DISCARD 取消事務
全部都不執行

執行事務5中情況:
正常執行
取消事務
全體連坐
在事務當中,一旦有錯誤,所有命令都不執行:只有語法錯誤會出現連坐的情況
冤有頭債有主:
事務當中,多個命令,有一個出現了問題,他就不執行,不影響其他命令執行

Watch 監控
監控一個鍵 當這個鍵開啟事務的時候,別人篡改了資料,事務是不生效的
樂觀鎖機制:
他認為在它開啟事務的時候,別人都不會修改,當他提交的時候,他就會去檢查別人改沒改,別人沒改他就成功,如果別人改了他就失敗。
悲觀鎖機制:
硬碟上的資料庫就採用的是悲觀鎖
開啟事務的時候,太認為別人可能會改我的資料,把資料鎖起來,不允許別人修改

Redis資料持久化

RDB(預設的機制)
2018年8月9日17:26:35 預設5秒
2018年8月9日17:26:40 就會自動把redis中所有的資料以快照的形式儲存在磁碟上
還浪費磁碟空間
資料可能出現問題
AOP(機制)
每次只要修改了資料,在日誌中會自動儲存
當重啟redis伺服器的時候,可以讀取日誌中的修改資料前的狀態
不使用資料持久化:
當成快取來用(高階版的memache)