Redis學習記錄 基礎知識

2021-10-16 22:27:30 字數 3939 閱讀 2325

reids的預設埠號為6379

redis預設繫結ip,localhost(127.0.0.1)

redis的預設的資料庫數量?

從redis.conf檔案中可以得知,redis預設資料庫的數量是16個(預設從0開始)

如何切換不同的資料庫?

(1)啟動資料庫並連線

// 進入預設安裝路徑/usr/local/bin

// 執行redis-server命令啟動redis資料庫(redis.conf是redis的

配置檔案,需要根據實際路徑來寫!)

[root@iz7ce5tbs7yiycz bin]# redis-server redis.conf

// 使用redis-cli命令連線資料庫並進入操作介面

[root@iz7ce5tbs7yiycz bin]# redis-cli

(2)使用select命令切換至需要的資料庫(預設資料庫是0)

// 使用select命令,index表示資料庫(預設0~15)

127.0.0.1:6379> select index

// 當index為3時,切換到資料庫3

127.0.0.1:6379> select 3

ok127.0.0.1:6379[3]>

// 當輸入的數值不對時

127.0.0.1:6379[3]> select 16

// 報錯了

(error) err db index is out of range

127.0.0.1:6379[3]> 127.0.0.1:6379[3]> select 16

// 第二種錯誤輸入

127.0.0.1:6379[3]> select -1

(error) err db index is out of range

往資料庫裡面新增鍵值和取值

(1)新增鍵值

// 使用set命令來新增鍵值

127.0.0.1:6379[3]> set key value [ex seconds|px milliseconds][nx|xx] [keepttl]

// 現在存入乙個name鍵,值為zhangsan

127.0.0.1:6379[3]> set name zhangsan

ok

(2)根據鍵來取值

// 使用get命令和key(鍵名)來獲取已經存入的值

127.0.0.1:6379[3]> get key

// 現在獲取name裡面的值

127.0.0.1:6379[3]> get name

"zhangsan"

// 當鍵值不存在是會出現什麼情況?

// 這個age鍵不存在,取出為空,不報錯

127.0.0.1:6379[3]> get age

(nil)

// 設定乙個位址,但沒有存值

127.0.0.1:6379[3]> set address value [ex seconds|px milliseconds] [nx|xx] [keepttl]

// 設定不成功,報錯了

127.0.0.1:6379[3]> set addess

(error) err wrong number of arguments for 'set' command

redis資料庫資料基本管理

(1)檢視所有的鍵

// 使用keys *查詢所有的鍵

127.0.0.1:6379> keys *

1) "student"

2) "addess"

3) "***"

4) "name"

(2)資料庫的資料量

// 使用dbsize命令可以知道當前資料庫所擁有的資料量

127.0.0.1:6379> dbsize

// 總共四條資料

(integer) 4

(3)清除當前資料庫

使用flushdb命令能夠清除當前資料庫的所有資料

127.0.0.1:6379> flushdb

ok127.0.0.1:6379> dbsize

(integer) 0

(4)清除所有的資料庫

// 使用flushall命令能夠清空所有的資料庫

// 先存入資料

127.0.0.1:6379> set name lisi

ok127.0.0.1:6379> set age 14

ok127.0.0.1:6379> set *** 男

ok127.0.0.1:6379> set grade 2

ok127.0.0.1:6379> set hiobby 12346

ok// 查詢0號資料庫的資料量

127.0.0.1:6379> dbsize

// 資料量為5條

(integer) 5

// 切換到15號資料庫

127.0.0.1:6379> select 15

ok// 使用flushall命令清空全部資料庫

127.0.0.1:6379[15]> flushall

ok// 切換回0號資料庫

127.0.0.1:6379[15]> select 0

ok// 資料庫被清空。所以只要使用了flushall命令,不管是否在當前資料庫,所有的資料庫都會被清空

127.0.0.1:6379> dbsize

(integer) 0

rides為什麼是單執行緒的?(注意redis6.0以上不是單執行緒了!!!)

1.官方答案

因為redis是基於記憶體的操作,cpu不是redis的瓶頸,redis的瓶頸最有可能是機器記憶體的大小或者網路頻寬。既然單執行緒容易實現,而且cpu不會成為瓶頸,那就順理成章地採用單執行緒的方案了。

2.效能指標

關於redis的效能,官方**也有,普通筆記本輕鬆處理每秒幾十萬的請求。

3.詳細原因

1)不需要各種鎖的效能消耗

redis的資料結構並不全是簡單的key-value,還有list,hash等複雜的結構,這些結構有可能會進行很細粒度的操作,比如在很長的列表後面新增乙個元素,在hash當中新增或者刪除

乙個物件。這些操作可能就需要加非常多的鎖,導致的結果是同步開銷大大增加。

總之,在單執行緒的情況下,就不用去考慮各種鎖的問題,不存在加鎖釋放鎖操作,沒有因為可能出現死鎖而導致的效能消耗。

2)單執行緒多程序集群方案

單執行緒的威力實際上非常強大,每核心效率也非常高,多執行緒自然是可以比單執行緒有更高的效能上限,但是在今天的計算環境中,即使是單機多執行緒的上限也往往不能滿足需要了,需要進一步摸索的是多伺服器集群化的方案,這些方案中多執行緒的技術照樣是用不上的。

所以單執行緒、多程序的集群不失為乙個時髦的解決方案。

3)cpu消耗

採用單執行緒,避免了不必要的上下文切換和競爭條件,也不存在多程序或者多執行緒導致的切換而消耗 cpu。

但是如果cpu成為redis瓶頸,或者不想讓伺服器其他cup核閒置,那怎麼辦?

可以考慮多起幾個redis程序,redis是key-value資料庫,不是關聯式資料庫,資料之間沒有約束。只要客戶端分清哪些key放在哪個redis程序上就可以了。

Redis學習鞏固 基礎知識

在沒有深入學習redis之前,我認為redis就是用來做快取的 狗頭 redis可不僅僅用來做快取,它的用途很多,例如 延遲佇列 訊息佇列 資料去重統計等等等,如果僅僅做快取,它的那些特性就白白浪費了,比如可排序集合有評分機制 分布式特性 資料持久化。能做這些功能的前提是深入了解它每乙個資料結構與特...

Redis基礎知識

1 redis是開源的高效能鍵值對 key value 資料庫 通過提供各種鍵值資料型別來適應不同場景下的儲存需求,並借助許多高層級的介面使其可以勝任如快取 佇列系統等不同的角色。2 remote dictionary server,以字典結構儲存資料,並允許其他應用通過tcp協議讀寫字典中的內容 ...

redis基礎知識

redis是乙個基於記憶體的高效能key value 1.redis五大基本資料型別 字串 string set get 雜湊 hash hmset hmgetall 鍊錶 list 按照插入順序可以新增乙個元素列表的頭部 左邊 和尾部 右邊 lpush rpush lrange 集合 set sa...