1. 程式人生 > 實用技巧 >查詢(順序查詢、折半查詢)

查詢(順序查詢、折半查詢)

redis 簡單介紹

Redis 是完全開源免費的,遵守 BSD 協議,是一個高效能的 key-value 資料庫,它也屬於 nosql。 Redis 和 Memcached 類似,都是記憶體級別的資料快取,主要使用者資料快取,它支援儲存的 value 型別相對 更多,包括 string(字串)、list(連結串列)、set(集合)、zset(sorted set --有序集合)和 hash(雜湊型別)。
Redis 不僅有豐富的特性(資料持久化到硬碟、 publish/subscribe、 key 過期),還有極高效能;

安裝

在安裝目錄下 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); });