Redis進階實踐之五Redis的高階特性
一、引言
上一篇文章寫了Redis的特徵,使用場景,同時也介紹了Redis的基本資料型別,redis的資料型別是操作redis的基礎,這個必須好好的掌握。今天我們開始介紹一些Redis的高階特性,雖然有些命令很簡單,但是這些命令是使用很廣泛的,並且是通用的一些命令,好好的把握這些命令,通過組合這些命令可以完成比較複雜的任務,這都是基礎,我們就開始我們今天的學習之旅吧。
二、Redis的高階特性
下面我們就是Redis高階特性的每個知識點,只是個人的理解,隨著學習的深入,也會更新相關的章節。
1、通用命令:
1.1】、語法:keys pattern,pattern可以是類似正則的匹配規則,可以是*,也可以是?,返回匹配規則的鍵值key的列表。
192.168.127.128:6379>keys * 1)"name" 2)"set2" 3)"set1" 192.168.127.128:6379>keys n* 1)"name" 192.168.127.128:6379>keys s* 1)"set2" 2)"set1" 192.168.127.128:6379>keys set? 1)"set2" 2)"set1" 192.168.127.128:6379>keys n?me 1)"name"
1.2】、語法:exists key [key ...],判斷一個或者多個key是否存在,並返回存在key的個數,不存在返回0。
192.168.127.128:6379>keys * 1)"name" 2)"age" 192.168.127.128:6379>exists name age address(該值存在) (integer)2 192.168.127.128:6379>exists name1 age1 address(該值存在) (integer)0
1.3】、語法:expire key seconds,給指定的key設定過期時間,單位是秒。用ttl命令可以檢視剩餘的時間,如果想更精確的、效能更好的倒計時功能,可以使用該功能。設定過期時間成功返回值為1,此命令可以多次執行,後面的過期值會覆蓋前面的過期值。過期的資料會從Redis資料庫裡刪除。
192.168.127.128:6379>expire name 60 設定name過期時間為60秒 (integer)1 192.168.127.128:6379>expire name 50 設定name過期時間為50秒 (integer)1 192.168.127.128:6379>ttl name (integer)48 192.168.127.128:6379>ttl name (integer)45 ttl返回值: -1、過期時間不存在 -2、過期操作成功,資料已經移除
1.4】、語法:persist key,取消已經設定了過期時間的key的過期策略。取消過期策略成功返回1,key沒有過期策略返回0。
192.168.127.128:6379>keys * 1)"name" 2)"age" 192.168.127.128:6379>expire name 60 設定name過期時間為60秒 (integer)1 192.168.127.128:6379>persist name (integer)1 //成功取消設定的過期策略 192.168.127.128:6379>persist name (integer)0 //上一步已經取消了,在此執行取消操作返回0。
1.5】、語法:select index,在Redis中,邏輯劃分為16個數據庫,索引從0-15,我們在使用的過程中,可以針對不同的業務邏輯把資料快取在不同的資料庫,這是一個很好的架構設計,切記不要把所有的資料放在0號資料庫裡,不便於管理和分類。這16個數據庫資料是分離的,不是共享的,或者說資料都是獨立的。
192.168.127.128:6379>select 1 OK 192.168.127.128:6379[1]> 192.168.127.128:6379[1]>select 5 OK 192.168.127.128:6379[5]>
1.6】、語法:move key db,至指定名稱為key的鍵值對轉移到指定資料庫db裡面,db是資料下標索引。
//索引為0的資料庫 192.168.127.128:6379>keys * 1)"name" 2)"age" //索引為5的資料庫 192.168.127.128:6379[5]>keys * (empty list or set) //在索引為5的資料庫裡面增加sex鍵值對,然後把其移動到索引為0的資料庫 192.168.127.128:6379[5]>set sex nan OK 192.168.127.128:6379[5]>keys * 1)"sex" 192.168.127.128:6379[5]>move sex 0 (integer)1 //索引為0的資料庫 192.168.127.128:6379>keys * 1)"name" 2)"sex" //從索引為5的資料已經移動到了索引為0的資料庫 2)"age"
1.7】、語法:randomkey,隨機返回當前資料庫中的key,其實這個功能我們可以使用在抽獎的場景,如果在併發比較高,而且有要保證效能的情況下,我建議大家使用Redis的這個功能來完成抽獎的功能。有時候會返回重複的值,如果做抽獎需要做處理一下。
192.168.127.128:6379>keys * 1)"name" 2)"sex" 2)"age" 192.168.127.128:6379>randomkey "name" 192.168.127.128:6379>randomkey "age" 192.168.127.128:6379>randomkey "age"
1.8】、語法:rename key newkey,重新給指定的key命名。
192.168.127.128:6379>keys * 1)"name" 2)"sex" 2)"age" 192.168.127.128:6379>rename name name1 OK 192.168.127.128:6379>keys * 1)"name1" 2)"sex" 2)"age" 192.168.127.128:6379>rename name1 name OK
1.9】、語法:echo message,在當前介質上列印message資訊。
192.168.127.128:6379>echo patrickLiu "patrickLiu"
1.10】、語法:dbsize,返回當前資料中鍵值對的個數,或者更準確的說是key的個數。
192.168.127.128:6379>keys * 1)"name" 2)"sex" 2)"age" 192.168.127.128:6379>dbsize 3
1.11】、語法:info [section],可以獲取當前資料的詳細資訊。
192.168.127.128:6379>info //顯示當前資料的所有資料 192.168.127.128:6379>info replication //顯示指定節的資訊 # Replication role:master connected_slaves:0 ...
1.12】、語法:config get *,獲取配置檔案中的所有的配置資料。
192.168.127.128:6379>config get * ... 192.168.127.128:6379>config get bind 1)"bind" 2)"192.168.127.128" 192.168.127.128:6379>config get port 1)"port" 2)"6379"
1.13】、語法:flushdb,清空當前資料所有的鍵值對。
192.168.127.128:6379>flushdb OK 192.168.127.128:6379>keys * (empty list or set)
1.14】、語法:flushall,清空所有資料庫的所有鍵值對。
192.168.127.128:6379>flushall OK 192.168.127.128:6379[1]>keys * (empty list or set) ... 192.168.127.128:6379[5]>keys * (empty list or set) ...
2、安全設定
2.1】、vi 或者 vim 編輯 redis.conf 文件,修改
#requirepass 123456 (設定密碼)
requirepass admin
2.2】、重啟伺服器 pkill redis-server
[[email protected]~]# application/program/redis-tool/redis-cli -h 192.168.127.128 -p 6379 192.168.127.128:6379>keys * (error)NOAUTH Authentication required. 192.168.127.128:6379>auth admin //授權 OK 192.168.127.128:6379>keys * //可以執行 (empty list or set)
2.3】、[[email protected]~]/root/application/program/redis-tool/redis-cli -h 192.168.127.128 -p 6379 -a admin
3、事務模型
redis也是支援事務的,但是這個事務是比較簡單的,之所以說簡單,是因為redis的事務不能保證操作的同時成功或者同時失敗而進行提交或者回滾,這種情形很容易導致資料的不一致性,大家使用的時候要特別注意。
3.1】、首先通過multi命令開啟事務,然後進行事務性的設定,這些設定完的資料會儲存在虛擬佇列中,最後可以通過exec命令執行事務。
//當前資料庫中無值 192.168.127.128:6379>keys * (empty list or set) 192.168.127.128:6379>multi OK 192.168.127.128:6379>set p1 1 QUEUED 192.168.127.128:6379>set p2 2 QUEUED 192.168.127.128:6379>set p3 3 QUEUED 192.168.127.128:6379>exec 1)OK 2)OK 3)OK 192.168.127.128:6379>keys * 1)"p3" 2)"p2" 3)"p1"
3.2】、redis的事務可以通過discard命令取消事務。
//當前資料庫中的值 192.168.127.128:6379>keys * 1)"p3" 2)"p2" 3)"p1" 192.168.127.128:6379>multi OK 192.168.127.128:6379>set p4 4 QUEUED 192.168.127.128:6379>set p5 5 QUEUED 192.168.127.128:6379>discard //取消事務 OK //值沒變 192.168.127.128:6379>keys * 1)"p3" 2)"p2" 3)"p1"
3.3】、特別注意redis事務的不一致性。
//當前資料庫中的值 192.168.127.128:6379>keys * 1)"age" 2)"name" 192.168.127.128:6379>get name "huangfeihong" 192.168.127.128:6379>get age (integer)18 192.168.127.128:6379>multi OK 192.168.127.128:6379>incr name QUEUED 192.168.127.128:6379>incr age QUEUED 192.168.127.128:6379>exec 1)(error)ERR value is not an integer or相關推薦
Redis進階實踐之五Redis的高階特性
一、引言 上一篇文章寫了Redis的特徵,使用場景,同時也介紹了Redis的基本資料型別,redis的資料型別是操作redis的基礎,這個必須好好的掌握。今天我們開始介紹一些Redis的高階特性,雖然有些命令很簡單,但是這些命令是使用很廣泛的,並且是通用的一些命令,好好的把握這些命令,通過組合這些
Redis進階實踐之四Redis的基本數據類型
規模 card 擴展 系統 fse nat 四大 軟件使用 html 轉載來源:http://www.cnblogs.com/PatrickLiu/p/8328669.html 一、引言 今天正式開始了Redis的學習,如果要想學好Redis,必須先學好Redi
Redis進階實踐之十 Redis哨兵叢集模式
一、引言 上一篇文章我們詳細的講解了Redis的主從叢集模式,其實這個叢集模式配置很簡單,只需要在Slave的節點上進行配置,Master主節點的配置不需要做任何更改,但是有一點,Master和Slave兩個節點的持久化配置儘量保持一致,否則會有奇怪的問題出現。從今天開始我們開始講Re
Redis進階實踐之二如何在Linux系統上安裝安裝Redis
進行 redis-cli windows 也會 www. 有關 目標 onf 名稱 原文:Redis進階實踐之二如何在Linux系統上安裝安裝Redis一、引言 上一篇文章寫了“如何安裝VMware Pro虛擬機”和在虛擬機上安裝Linux操作系統。那是第一步,有
Redis進階實踐之十一 Redis的Cluster集群搭建
key 第一個 class 分布式 開關 rep redis 3.0 應用程序 嘗試 原文:Redis進階實踐之十一 Redis的Cluster集群搭建一、引言 本文檔只對Redis的Cluster集群做簡單的介紹,並沒有對分布式系統的所涉及到的概念做深入的探
Redis進階實踐之三如何在Windows系統上安裝安裝Redis
Redis進階實踐之三如何在Windows系統上安裝安裝Redis 一、Redis的簡介 Redis是一個key-value儲存系統。和Memcached類似,它支援儲存的value型別相對更多,包括strin
Redis進階實踐之十二 Redis的Cluster叢集動態擴容
一、引言 上一篇文章我們一步一步的教大家搭建了Redis的Cluster叢集環境,形成了3個主節點和3個從節點的Cluster的環境。當然,大家可以使用 Cluster info 命令檢視Cluster叢集的狀態,也可以使用Cluster Nodes 命令來詳細瞭
Redis進階實踐之十一 Redis的Cluster叢集搭建
一、引言 本文件只對Redis的Cluster叢集做簡單的介紹,並沒有對分散式系統的所涉及到的概念做深入的探討。本文只是針對如何設定叢集、測試和操作叢集做了簡述,並且從使用者的角度描述了系統的行為,並不涉及Redis叢集規範中所包含的細節。但是,本教程試圖從終端使用者的角度來解釋有關Redis的
Redis進階實踐之一VMWare Pro虛擬機安裝和Linux系統的安裝
quic 頻繁 消息隊列 spa 格式 效率 返回 com 會有 原文:Redis進階實踐之一VMWare Pro虛擬機安裝和Linux系統的安裝一、引言 設計模式寫完了,相當於重新學了一遍,每次學習都會有不同的感受,對設計模式的理解又加深了,理解的更加透徹了
Redis進階實踐之一
Redis進階實踐之一VMWare Pro虛擬機器安裝和Linux系統的安裝 一、引言 設計模式寫完了,相當於重新學了一遍,每次學習都會有不同的感受,對設計模式的理解又加深了,理解的更加透徹了。還差一篇關於設計模式的總結的文章了,
redis叢集伸縮實踐之官方redis-cluster伸縮
redis叢集由於各種原因,可能需要下線機器,例如某臺機器經常故障,需要換掉;例如某些時間段不需要那麼多機器,都可以下線機器。某些時刻又需要增加機器,例如淘寶雙十一促銷,京東618等。下面我來實踐redis官方叢集的節點伸縮。這個例子單機實現叢集。ps:建議使用redis-t
redis學習(五) redis進階之事務和過期時間的應用
事務redis中的事務是一組命令的集合。使得一個事務中的redis命令要麼全執行,要麼全不執行使用方式: multi 和exec完成multi: 告訴redis將同一個事務的命令儲存起來。 之後傳送兩個SADD, redis返回queued表示命令進入了等待執行的事務佇列中
Redis進階之持久化
一、Redis高可用概述 在介紹Redis高可用之前,先說明一下在Redis的語境中高可用的含義。 我們知道,在web伺服器中,高可用是指伺服器可以正常訪問的時間,衡量的標準是在多長時間內可以提供正常服務(99.9%、99.99%、99.999% 等等)。但是在Red
Redis進階之記憶體模型
前言 Redis是目前最火爆的記憶體資料庫之一,通過在記憶體中讀寫資料,大大提高了讀寫速度,可以說Redis是實現網站高併發不可或缺的一部分。 我們使用Redis時,會接觸Redis的5種物件型別(字串、雜湊、列表、集合、有序集合),豐富的型別是Redis相對於Mem
ansible運維自動化之五---roles高階進階
Roles應用場景 複雜場景(建議使用roles) 變更指定主機或主機組 如命名不規範維護和傳承成本大 某些功能需Inlogs.com/blog/675193/201901/675193-20190102225646401-1546983424.png) roles下面每一個目錄是一個
進階第十五課 Python模塊之Numpy
忽略 作用 擴展 .sh error pty logic 給定 線性 轉 從一位大神哪裏轉過來的,大家一起學習吧。今後會逐步增加示例代碼。 NumPy NumPy是高性能科學計算和數據分析的基礎包。部分功能如下: ndarray, 具有矢量算術運算和復雜廣播能力
系統學習redis之五——redis數據類型之list類型及操作
hello 保留 個數 描述 查詢 元素 例如 ltr 插入 list數據類型介紹 list是一個鏈表結構,主要功能是push、pop、獲取一個範圍的所有值等等,操作中key可以理解為鏈表的名字。redis的list類型其實就是一個每個子元素都是string類型的雙向鏈表。
AngularJS進階(三十五)瀏覽器相容性解決之道
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
redis cluster 4.0.9 之五: redis-trib.rb del-node
os: ubuntu 16.04 redis:4.0.9 ruby:2.4.4 ip規劃 192.168.0.101 7000,7001,7002,7003 192.168.0.102 7000,7001,7002,7003 192.168.0.103 7000,7001,700
知乎技術分享:從單機到2000萬QPS併發的Redis高效能快取實踐之路
本文來自知乎官方技術團隊的“知乎技術專欄”,感謝原作者陳鵬的無私分享。 1、引言 知乎儲存平臺團隊基於開源Redis 元件打造的知乎 Redis 平臺,經過不斷的研發迭代,目前已經形成了一整套完整自動化運維服務體系,提供很多強大的功能。本文作者陳鵬是該系統的負責人,本次文