-
1 # 95後java程式猿
-
2 # NC少年
Redis,是一個記憶體儲存的非關係資料庫,支援字串、列表、集合、散列表、有序集合五類儲存型別。
先看怎麼使用
啟動redis-cli客戶端
執行"get name", 返回"wukong"
根據key(即“name”)返回value("wukong")
是不是有點類似python的內建dict資料型別,猜測底層演算法應該是類似Hash Map原理。
再說演算法實現原理
看了下Redis的官方文件,沒有講到內部的演算法原理,只得翻github的原始碼,稍微瀏覽了下,是用C語言實現的,程式碼結構很清晰,程式碼量也很緊湊。
除了client/server和cluster(叢集的程式碼),答案應該在"dict.h"和"dict.c"兩個檔案:
This file implements in memory hash tables with insert/del/replace/find/ get-random-element operations. Hash tables will auto resize if needed tables of power of two in size are used, collisions are handled by chaining。簡單點說,我覺得redis可以看成是一個分散式的Hash Table,演算法上基於分散式叢集和HashMap原理(或其變形、擴充套件)實現的,應該是對key-value模式進行了擴充套件,提供快速的資料操作GET/SET/DEL等、支援資料持久化。
如果再想了解更具體細節的話,讀src目錄下的C原始碼吧。
-
3 # kid7157887
看問題描述,不太明確你的意思。按照我對你問題的理解說一下。
1.如果說redis查詢方式,redis本身是key value結構存取資料,所以用get key這樣就可以取出資料,存用set key value
2.如果說利用redis做快取,幫助快速查詢資料庫,可以將資料庫中的主健作為redis的key,value可使用資料庫的行記錄存入redis中,查詢時按主健get即可。
-
4 # 小逗電競
Redis 是用C語言編寫的記憶體資料庫,分Redis Server和Redis Client,是一款非常高效的資料快取元件,在我們日常開發中經常用到,你可以將它理解成資料庫,但不是我們平常用的關係型資料庫,Redis有資料庫的概念,但沒有表一說。
Redis在資料儲存時,是以Key-Value形式儲存的,Value可以是String(字串)、List(列表)、Set(集合)、ZSet(有序集合)、Hash(雜湊表)中任意一種,所以從Redis中取資料時還是要根據Key取。
下面透過一款優秀的GUI工具(Redisclient)瞭解其資料儲存,Redisclient請從Github下載,下載後是個壓縮包。
然後進入release:
在cmd命令視窗,執行以下命令開啟。
java -jar redisclient-win32.x86_64.2.0.jar1、連線Redis Server
填寫主Redis Server部署主機IP和埠(安裝後預設是6379)
連線成功後,左側顯示db0-db15,一共16個數據庫,預設資料寫在db0中,也可以選擇(select N)。
2、往Redis裡寫資料
選擇db0,右鍵新建,我們選擇字串,填寫鍵(testKey)和值(testValue),然後點確定,此時資料就儲存進Redis了,如果要檢視的話,在db0下找著testKey,右側資料庫顯示出來了。
回覆列表
redis相當於資料庫的快取,會把經常查詢的資料放到redis中,因為redis用到了記憶體,而且不用每次都查詢資料庫,所以速度更快,假如redis中沒有使用者要查詢的資料時,就會從資料庫查詢然後放到redis中,redis會根據查詢次數的多少進行排序,把很少查詢的資料從快取中刪除。