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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

为什么 Redis 默认 16 个库?90% 以上程序员不知道!

發(fā)布時間:2025/3/21 数据库 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 为什么 Redis 默认 16 个库?90% 以上程序员不知道! 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在實際項目中Redis常被應用于做緩存,分布式鎖、消息隊列等。但是在搭建配置好Redis服務器后很多朋友應該會發(fā)現(xiàn)和有這樣的疑問,為什么Redis默認建立了16個數(shù)據(jù)庫,如下圖所示。

Redis為什么默認16個數(shù)據(jù)庫?

一、16個數(shù)據(jù)庫的由來

Redis是一個字典結構的存儲服務器,一個Redis實例提供了多個用來存儲數(shù)據(jù)的字典,客戶端可以指定將數(shù)據(jù)存儲在哪個字典中。這與在一個關系數(shù)據(jù)庫實例中可以創(chuàng)建多個數(shù)據(jù)庫類似(如下圖所示),所以可以將其中的每個字典都理解成一個獨立的數(shù)據(jù)庫。

Redis為什么默認16個數(shù)據(jù)庫?

以MySQL實例為例

Redis默認支持16個數(shù)據(jù)庫,可以通過調(diào)整Redis的配置文件redis/redis.conf中的databases來修改這一個值,設置完畢后重啟Redis便完成配置。

Redis為什么默認16個數(shù)據(jù)庫?

客戶端與Redis建立連接后會默認選擇0號數(shù)據(jù)庫,不過可以隨時使用SELECT命令更換數(shù)據(jù)庫。

# 切庫 redis> SELECT 1 # 默認0號db,切換為1號db OK redis [1] > GET username # 從1號庫中獲取 username (nil)

在實際項目中則可以通過以Redis配置文件的形式指定數(shù)據(jù)庫,如下圖所示

Redis為什么默認16個數(shù)據(jù)庫?

二、正確理解Redis的“數(shù)據(jù)庫”概念

Redis為什么默認16個數(shù)據(jù)庫?

由于Redis不支持自定義數(shù)據(jù)庫的名字,所以每個數(shù)據(jù)庫都以編號命名。開發(fā)者則需要自己記錄存儲的數(shù)據(jù)與數(shù)據(jù)庫的對應關系。另外Redis也不支持為每個數(shù)據(jù)庫設置不同的訪問密碼,所以一個客戶端要么可以訪問全部數(shù)據(jù)庫,要么全部數(shù)據(jù)庫都沒有權限訪問。但是,要正確地理解Redis的“數(shù)據(jù)庫”概念這里不得不提到一個命令:

# 清空一個Redis實例中所有數(shù)據(jù)庫中的數(shù)據(jù) redis 127.0.0.1:6379> FLUSHALL

該命令可以清空實例下的所有數(shù)據(jù)庫數(shù)據(jù),這與我們所熟知的關系型數(shù)據(jù)庫所不同。關系型數(shù)據(jù)庫多個庫常用于存儲不同應用程序的數(shù)據(jù) ,且沒有方式可以同時清空實例下的所有庫數(shù)據(jù)。所以對于Redis來說這些db更像是一種命名空間,且不適宜存儲不同應用程序的數(shù)據(jù)。比如可以使用0號數(shù)據(jù)庫存儲某個應用生產(chǎn)環(huán)境中的數(shù)據(jù),使用1號數(shù)據(jù)庫存儲測試環(huán)境中的數(shù)據(jù),但不適宜使用0號數(shù)據(jù)庫存儲A應用的數(shù)據(jù)而使用1號數(shù)據(jù)庫B應用的數(shù)據(jù),不同的應用應該使用不同的Redis實例存儲數(shù)據(jù)。Redis非常輕量級,一個空Redis實例占用的內(nèi)在只有1M左右,所以不用擔心多個Redis實例會額外占用很多內(nèi)存。

三、集群情況下是否支持一個實例多個db?

Redis為什么默認16個數(shù)據(jù)庫?

要注意以上所說的都是基于單體Redis的情況。而在集群的情況下不支持使用select命令來切換db,因為Redis集群模式下只有一個db0。再擴展一些集群與單機Reids的區(qū)別,感興趣的朋友可以去查閱相關的資料深入理解,這里就不做討論了。

  • key批量操作支持有限:例如mget、mset必須在一個slot

  • Key事務和Lua支持有限:操作的key必須在一個節(jié)點

  • key是數(shù)據(jù)分區(qū)的最小粒度:不支持bigkey分區(qū)

  • 不支持多個數(shù)據(jù)庫:集群模式下只有一個db0

  • 復制只支持一層:不支持樹形復制結構

Redis為什么默認16個數(shù)據(jù)庫?

四、總結

Redis實例默認建立了16個db,由于不支持自主進行數(shù)據(jù)庫命名所以以dbX的方式命名。默認數(shù)據(jù)庫數(shù)量可以修改配置文件的database值來設定。對于db正確的理解應為“命名空間”,多個應用程序不應使用同一個Redis不同庫,而應一個應用程序對應一個Redis實例,不同的數(shù)據(jù)庫可用于存儲不同環(huán)境的數(shù)據(jù)。最后要注意,Redis集群下只有db0,不支持多db。

總結

以上是生活随笔為你收集整理的为什么 Redis 默认 16 个库?90% 以上程序员不知道!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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