查詢(順序查詢、折半查詢)
阿新 • • 發佈:2020-09-20
redis 簡單介紹
Redis 是完全開源免費的,遵守 BSD 協議,是一個高效能的 key-value 資料庫,它也屬於 nosql。 Redis 和 Memcached 類似,都是記憶體級別的資料快取,主要使用者資料快取,它支援儲存的 value 型別相對 更多,包括 string(字串)、list(連結串列)、set(集合)、zset(sorted set --有序集合)和 hash(雜湊型別)。
Redis 不僅有豐富的特性(資料持久化到硬碟、 publish/subscribe、 key 過期),還有極高效能;
安裝
- 由於官網不提供exe 的安裝包 https://github.com/MicrosoftArchive/redis/releases
- 安裝過程 next... next ....
- 或者使用 zip檔案解壓後得到
在安裝目錄下 redis-cli.exe 表示客戶端啟動工具 和 redis-server.exe表示服務端啟動工具
直接cd 到當前目錄 啟動 服務和 啟動 客戶端工具
正確顯示埠表示連線成功
redis.windows-service.conf 修改一些配置
使用
- 在 node 中使用 要 安裝; npm install redis --save
// 安裝redis npm i redis --save // 啟動 redis-server.exe redis.windows.conf // 另一個視窗進入 redis-cli.exe -h 127.0.0.1 -p 6379 const redis = require('redis'); // 建立客戶端; const redisClient = redis.createClient(6379,'127.0.0.1'); // 監控錯誤; redisClient.on('error',err=>{ console.error(err); }) // 設定 值 獲取值; redisClient.set('myname','kg',redis.print); redisClient.get('myname',(err,val)=>{ if(err){ console.error(err); return } console.log(val); // 退出 redisClient.quit(); })
語法和 可存取資料型別
- Redis 字串資料型別的相關命令用於管理 redis 字串值。
檢視所有的 key: keys *
普通設定: set key value
設定並加過期時間: set key value EX 30 表示 30 秒後過期
獲取資料: get key
刪除指定資料: del key
刪除全部資料: flushall
檢視型別: type key
設定過期時間: expire key 20 表示指定的 key5 秒後過期
- Redis 列表是簡單的字串列表,按照插入順序排序。你可以新增一個元素到列表的頭部(左邊)或 者尾部(右邊)
列表右側增加值: rpush key value 列表左側增加值: lpush key value 右側刪除值: rpop key 左側刪除值: lpop key 獲取資料: lrange key 刪除指定資料: del key 刪除全部資料: flushall 檢視型別: type key
- Redis 的 Set 是 String 型別的無序集合。集合成員是唯一的,這就意味著集合中不能出現重複的數 據。它和列表的最主要區別就是沒法增加重複值
給集合增資料: sadd key value
刪除集合中的一個值: srem key value
獲取資料: smembers key
刪除指定資料: del key
刪除全部資料: flushall
- Redis hash 是一個 string 型別的 field 和 value 的對映表,hash 特別適合用於儲存物件。
設定值 hmset : hmset zhangsan name "張三" age 20 sex “男” // 一次設定多個
設定值 hset : hset zhangsan name "張三" // 一次設定一個
獲取資料: hgetall key
刪除指定資料: del key
刪除全部資料: flushall
Redis 訂閱釋出
- Redis 釋出訂閱(pub/sub)是一種訊息通訊模式:傳送者(pub)傳送訊息,訂閱者(sub)接收訊息。
- 誇伺服器通訊
一臺伺服器釋出訊息
其他多臺可以訂閱
// 釋出
var redis = require("redis"),
client = redis.createClient(6379,'127.0.0.1');
// 釋出
client.publish('testPublish', 'message from publish.js');
// 訂閱
var redis = require("redis"),
client = redis.createClient(6379,'127.0.0.1');
// 監聽廣播 監聽testPublish 這名字的廣播;
client.subscribe('testPublish');
client.on('message', function(channel, msg){
console.log('client.on message, channel:', channel, ' message:', msg); });