Redis基础知识总结概述
redis是一個(gè)key-value存儲(chǔ)系統(tǒng)。和Memcached類似,它支持存儲(chǔ)的value類型相對(duì)更多,包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set --有序集合)和hash(哈希類型)。這些數(shù)據(jù)類型都支持push/pop、add/remove及取交集并集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎(chǔ)上,redis支持各種不同方式的排序。與memcached一樣,為了保證效率,數(shù)據(jù)都是緩存在內(nèi)存中。區(qū)別的是redis會(huì)周期性的把更新的數(shù)據(jù)寫入磁盤或者把修改操作寫入追加的記錄文件,并且在此基礎(chǔ)上實(shí)現(xiàn)了master-slave(主從)同步。
Redis 是一個(gè)高性能的key-value數(shù)據(jù)庫。 redis的出現(xiàn),很大程度補(bǔ)償了memcached這類key/value存儲(chǔ)的不足,在部 分場(chǎng)合可以對(duì)關(guān)系數(shù)據(jù)庫起到很好的補(bǔ)充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客戶端,使用很方便。 --------出自百度百科
redis是屬于非關(guān)系型數(shù)據(jù)庫,其實(shí)呢它只是一種結(jié)構(gòu)化儲(chǔ)存方法的集合,儲(chǔ)存結(jié)構(gòu)就是key-value,說到redis就不得不提memcache,兩者區(qū)別就在于memcache是純內(nèi)存的數(shù)據(jù)庫而redis是內(nèi)存+磁盤,從redis3.0之后集群技術(shù)就相對(duì)成熟了,可以用于生產(chǎn)環(huán)境。
綜上可以簡(jiǎn)單總結(jié)redis是內(nèi)存數(shù)據(jù)庫,基于key-velue儲(chǔ)存數(shù)據(jù),支持持久存儲(chǔ),支持事務(wù),支持主從,支持cluster(集群)。 redis官網(wǎng):redis.io,redis命令參考手冊(cè):http://redisdoc.com 手冊(cè)中詳細(xì)解釋并演示了命令的使用。
yum安裝redis
[root@BIGBOSS local]# yum install redis -y [root@BIGBOSS local]# rpm -q redis redis-3.2.12-1.el7.x86_64 # 啟動(dòng)并檢查 [root@BIGBOSS local]# systemctl start redis [root@BIGBOSS local]# ss -tnl |grep 6379 LISTEN 0 128 127.0.0.1:6379 *:* # 此時(shí)并沒有配置端口和密碼可以直接連接 [root@BIGBOSS ~]# redis-cli 127.0.0.1:6379>保護(hù)模式
早期redis試運(yùn)行在內(nèi)網(wǎng)環(huán)境中的,是沒有烤爐安全認(rèn)證問題的,也就是說只要服務(wù)啟動(dòng)了任何人都能訪問redis中的數(shù)據(jù),但是后來有了云,有人就把redis用在云環(huán)境中,而且把監(jiān)聽的IP設(shè)置成了0.0.0.0,所以就出現(xiàn)了安全漏洞,容易被人黑,從3.2開始就增加了一個(gè)認(rèn)證的特性protected-mode yes但是只這一條還是不行的,還需要添加一條密碼 requirepass 12345。
redis的應(yīng)用場(chǎng)景
- 數(shù)據(jù)緩存:提高訪問性能
- session共享:會(huì)話保持
- 做為計(jì)數(shù)器:nginx+lua+redis實(shí)現(xiàn)計(jì)數(shù)器,實(shí)現(xiàn)ip的自動(dòng)封禁。
- 消息隊(duì)列:構(gòu)建實(shí)時(shí)消息系統(tǒng),聊天、群聊
redis的持久化儲(chǔ)存
redis不同于memcahed的地方就是他的數(shù)據(jù)不僅在內(nèi)存中也存在于磁盤上,而將數(shù)據(jù)從內(nèi)存中保存到磁盤上就叫做數(shù)據(jù)的持久化儲(chǔ)存。
數(shù)據(jù)持久化的兩種機(jī)制:RDB、AOF
RDB可以每個(gè)一段時(shí)間進(jìn)行一次持久化,并且是基于快照的方式實(shí)現(xiàn)的。儲(chǔ)存文件的位置/var/lib/redis下。
AOF的持久化,就是借助一個(gè)日志文件,這個(gè)日志文件只記錄所執(zhí)行的寫的命令,不會(huì)記錄讀命令,再重啟服務(wù)器的時(shí)候,如果會(huì)九華數(shù)據(jù)中沒有,就會(huì)去都取日志中的內(nèi)容進(jìn)行重寫操作。
一般在使用持久化的是我們都是兩種方式結(jié)合使用,當(dāng)然也可以只是用其中一個(gè),或者禁用持久化功能。
redis中的數(shù)據(jù)類型
- 字符串類型:可以是字符串,也可以是數(shù)字
- 哈希(hash)類型:redis中的hash其實(shí)就是鍵值對(duì)的集合
- 列表(list)類型:列表中的元素是有順序的,列表中勻速是從0開始的,列表其實(shí)是雙向的(左L 右R)
- 集合類型:有序集合類型,無序集合類型
redis中的消息模式
- 隊(duì)列模式
在列隊(duì)模式中其實(shí)就是每次插入數(shù)據(jù)都是載入在最前面的,而先插入的數(shù)據(jù)在后面,列表中始終維持了一個(gè)隊(duì)列所以稱之為隊(duì)列模式。
- 發(fā)布-訂閱模式
發(fā)布-訂閱模式下,每個(gè)消息被廣播到所有消費(fèi)者中
resis中的事務(wù)
- 事務(wù)的隔離性:每個(gè)事務(wù)都是一個(gè)隔離的操作,事務(wù)中所有的命令都會(huì)按照順序執(zhí)行,并且執(zhí)行過程不會(huì)被其他事物打斷。
- 原子性:事務(wù)中的明亮要么都執(zhí)行,要么都不執(zhí)行。
redis使用事務(wù)的過程:
演示事務(wù):模擬場(chǎng)景tom銀行卡里有3000元,jerry銀行卡中有5000元,jerry給tom轉(zhuǎn)賬1000元,結(jié)果是兩人卡中都為4000元。
- 創(chuàng)建一個(gè)有序集合叫做salary,tom的值為3000,jerry得知為5000
- 使用事務(wù)完成轉(zhuǎn)賬
注意:如果不使用事務(wù)如下,當(dāng)執(zhí)行完ZINCRBY selary 1000 tom的操作,tom的賬戶里已經(jīng)是4000了,此時(shí)jerry的賬戶里仍有5000,那么這1000是從哪里來的呢?很明顯這種不使用事務(wù)的操作會(huì)帶來數(shù)據(jù)不一致的問題
127.0.0.1:6379> ZINCRBY selary 1000 tom "4000" 127.0.0.1:6379> ZINCRBY selary -1000 jerry "4000" 127.0.0.1:6379> ZRANGE selary 0 10 withscores 1) "jerry" 2) "4000" 3) "tom" 4) "4000"慢日志查詢
慢日志主要依靠?jī)蓚€(gè)變量來設(shè)置
- slowlog-log-slower-than:指定面日志查詢的時(shí)間,單位是毫秒
- slowlog-max-len:指定最多紀(jì)錄多少條慢日志
慢日志的設(shè)定可以再配置文件中修改,也可以直接在命令行修改參數(shù),但是在命令行修改只是修改內(nèi)存中的但能立即生效,想要永久生效需要修改配置文件。
本博文中提到的有些概念并沒有進(jìn)行深入的剖析,知識(shí)做了整體的概述,后續(xù)博文中會(huì)有更詳細(xì)的講解。
------做運(yùn)維之前很矯情的小年輕-----
總結(jié)
以上是生活随笔為你收集整理的Redis基础知识总结概述的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL乱码问题解决步骤详解
- 下一篇: Redis的数据类型详解