日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Redis基础知识总结概述

發(fā)布時(shí)間:2025/4/16 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Redis基础知识总结概述 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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。

  • 配置文件如下
  • [root@BIGBOSS ~]# vim /etc/redis.conf protected-mode yes bind 0.0.0.0 requirepass 12345
  • 重啟服務(wù)登錄測(cè)試
  • [root@BIGBOSS ~]# systemctl restart redis [root@BIGBOSS ~]# redis-cli >>>當(dāng)執(zhí)行這個(gè)命令的時(shí)候能登陸 127.0.0.1:6379> set name tom (error) NOAUTH Authentication required. >>> 但是執(zhí)行命令的時(shí)候會(huì)提示沒有權(quán)限
  • 認(rèn)證方式如下
  • 127.0.0.1:6379> auth 12345 >>>做認(rèn)證 OK 127.0.0.1:6379> set name tom OK >>>認(rèn)證后就能執(zhí)行命令了

    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ì)列模式。
    10.220.5.171:6379> lpush list1 q1 (integer) 1 10.220.5.171:6379> lpush list1 q2 (integer) 2 10.220.5.171:6379> lpush list1 q3 (integer) 3 10.220.5.171:6379> lpush list1 q4 (integer) 4 10.220.5.171:6379> lrange list1 0 10 1) "q4" 2) "q3" 3) "q2" 4) "q1"
    • 發(fā)布-訂閱模式
      發(fā)布-訂閱模式下,每個(gè)消息被廣播到所有消費(fèi)者中

    resis中的事務(wù)

    • 事務(wù)的隔離性:每個(gè)事務(wù)都是一個(gè)隔離的操作,事務(wù)中所有的命令都會(huì)按照順序執(zhí)行,并且執(zhí)行過程不會(huì)被其他事物打斷。
    • 原子性:事務(wù)中的明亮要么都執(zhí)行,要么都不執(zhí)行。

    redis使用事務(wù)的過程:

  • 啟動(dòng)事務(wù)(MULTI)
  • 寫入要執(zhí)行的操作
  • 執(zhí)行事務(wù)(EXEC)
  • 演示事務(wù):模擬場(chǎng)景tom銀行卡里有3000元,jerry銀行卡中有5000元,jerry給tom轉(zhuǎn)賬1000元,結(jié)果是兩人卡中都為4000元。

    • 創(chuàng)建一個(gè)有序集合叫做salary,tom的值為3000,jerry得知為5000
    127.0.0.1:6379> zadd selary 3000 tom (integer) 1 127.0.0.1:6379> zadd selary 5000 jerry (integer) 1 127.0.0.1:6379> zrange selary 0 10 withscores 1) "tom" 2) "3000" 3) "jerry" 4) "5000"
    • 使用事務(wù)完成轉(zhuǎn)賬
    127.0.0.1:6379> MULTI OK 127.0.0.1:6379> ZINCRBY selary 1000 tom QUEUED >>>操作并沒有被執(zhí)行而是加入到了隊(duì)列中 127.0.0.1:6379> ZINCRBY selary -1000 jerry QUEUED >>>操作并沒有被執(zhí)行而是加入到了隊(duì)列中 127.0.0.1:6379> EXEC >>>執(zhí)行事務(wù)隊(duì)列中的操作 1) "4000" 2) "4000" 127.0.0.1:6379> ZRANGE selary 0 10 WITHSCORES 1) "jerry" 2) "4000" 3) "tom" 4) "4000"

    注意:如果不使用事務(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)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。