window 配置redis node 使用redis

1下載window 版

https://github.com/ServiceStack/redis-windows

2、運行

下載完後,解壓找到32或64位版本解壓。放到d盤下。

cmd 進到目錄運行:

  1. redis-server.exe redis.conf 
window 版本下是redis.window.conf ,可以手動改成redis.conf

這個窗口要保持,關閉時redis服務會自動關閉。

3、測試

再開個cmd 運行:

redis-cli.exe
輸入SET foo bar  //ok

KEYS* // foo

GET foo // bar

4、文件結構

  1. redis-benchmark.exe         #基準測試  
  2. redis-check-aof.exe         # aof  
  3. redis-check-dump.exe        # dump  
  4. redis-cli.exe               # 客戶端  
  5. redis-server.exe            # 服務器  
  6. redis.windows.conf          # 配置文件  

5、連接redis 服務器

使用redis自帶的命令,能夠連接服務器。

redis-cli   -h localhost -p 6379  -a 身份驗證  也就是密碼  


6、mis安裝redis

從https://github.com/MSOpenTech/redis/releases

下載mis 文件安裝。安裝時會提示添加到環境變量path。

當用redis-cli -v 查看沒找到時,需要手動添加變量了。

成功後環境變量裏會有C:\Program Files\Redis\

用命令  redis-cli -v //查看版本 redis-cli 3.2.100

redis-cli //進入命令輸出

set name cc //ok

get name //"cc"

運行

redis-server.exe redis.windows.conf

會提示未找到 conf 需要進到c盤下安裝的目錄再運行。

意見用安裝的方式。

7、redis 可視化工作

https://redisdesktop.com/download

國內下載地址http://download.csdn.net/download/li295214001/9398955

有window mac  linux 版本。

下載後安裝,創建連接,填寫 ip host auth身份驗證也就是密碼  等即可。

8、鏈接服務器

redis-cli -h host -p port -a password

在鏈接服務器redis時需要密碼,也就是客戶端配置時的auth 身份驗證 redis-cli 鏈接時用-a  auth(password)

9、redis 數據類型

支持5種類型:

1)字符串

set key value //set name 'star'

get name// star

2)哈希值

Redis的哈希值是字符串字段和字符串值之間的映射,所以他們是表示對象的完美數據類型

在Redis中的哈希值,可存儲超過400十億鍵值對。

hmset key  value value ...

hgetall key  

hmset 哈希名  key value 

哈希用工具看到有個row key  value 三列

3)列表

Redis列表是簡單的字符串列表,排序插入順序。您可以在頭部或列表的尾部Redis的列表添加元素。

列表的最大長度爲232 - 1 (每個列表超過4十億元素4294967295)元素。

lpush list a

lpush list b

lrange list // b a 

列表用工具看到row  value

4)集合sadd

Redis集合是字符串的無序集合。在Redis中可以添加,刪除和測試文件是否存在在O(1)的時間複雜度的成員。

sadd 集合名  value //添加

smembers 集合名 //查看 

集合用工具看是row value

集合排序

Redis的集合排序類似於Redis集合,字符串不重複的集合。不同的是,一個有序集合的每個成員關聯分數,用於以便採取有序set命令,從最小的到最大的分數有關。雖然成員都是獨一無二的,分數可能會重複。

5)有序集合

在集合上加了一個score 分數值 。

Redis有序集合類似Redis集合存儲在設定值唯一性。不同的是,一個有序集合的每個成員帶有分數,用於以便採取有序set命令,從最小的到最大的分數有關。

zadd  集合名  分數值 (score)  value

zrange 集合名  0 10   //查詢  0到10的數據

有序集合用工具看是row value score


10、node redis 用法 


// redis 鏈接
var redis   = require('redis');
var client  = redis.createClient('6379', '127.0.0.1',{db:0,password:""}); //鏈接服務器時需設置password

// redis 鏈接錯誤
client.on("error", function(error) {
    console.log(error);
});
// redis 密碼 (reids.conf未開啓驗證,此項可不需要)
//client.auth("foobared");

//選擇數據庫,如0 默認鏈接的是第0個。可以不用select 。直接 client.set
client.select('0', function(error){
    if(error) {
        console.log(error);
    } else {
        // set
        client.set('str_key_0', '0', function(error, res) {
            if(error) {
                console.log(error);
            } else {
                console.log(res);
            }
            // 關閉鏈接
            client.end();
        });
    }
});

client.on('connect',function(){
    //-----------鍵使用
    //set 寫法
    client.set('name','star',redis.print)//reply:OK
    //設置name 過期時間  
    client.expire('name',3)//3s
    client.set('age','25',function(err,reply){
        if(err){
            console.log(err);
        }else{
            console.log(reply.toString())//Ok
        }
    })
    //獲取
    client.get('name',function(err,reply){
        console.log('name:',reply.toString())//star
        client.quit();
    })

    //------哈希表
    client.hset("hese1", "hashtest 1", "some value", redis.print);
    client.hset(["hese1", "hashtest 2", "some other value"], redis.print);
    client.hkeys("hese1", function (err, replies) {
        console.log(replies.length + " replies:");
        replies.forEach(function (reply, i) {
            console.log("    " + i + ": " + reply);
        });
        client.quit();
    });
    client.hget("hese1","hashtest 1",redis.print);


    //-----爲一個Key一次設置多個哈希鍵/值, 多用於JSON對象的寫入(序列化的SESSION)。
    client.hmset('session_1',{username:'star',pwd:'123'},function(err,reply){
        console.log(err,reply);
    })
    client.hgetall('session_1',function(err,reply){
        console.log(reply)
    })
})


11、express 中使用redis 持久化session

參考:http://www.open-open.com/lib/view/open1421307039328.html

var session = require('express-session');
var RedisStore = require('connect-redis')(session);
app.use(cookieParser());
// 設置 Session
app.use(session({
  store: new RedisStore({
    host: "127.0.0.1",
    port: 6379,
    db: 0,password""  
  }),
  resave:false,
  saveUninitialized:false,
  secret: 'keyboard cat'
}))
使用的版本:

express 4.13.4  express-session 1.14.0  connect-redis 3.1.0

在配置時db 設置的是序號而不是名稱。

如redis服務器有密碼需要配置assword

使用redis 保存session好處

部署時用nginx 來均衡壓力,分配請求到多個node 服務上。這時會遇到session的問題,

比如我在8008 node 服務上登錄了,第二次訪問了8009 node 服務,這時登錄狀態就不在了。

如果有backup 備用服務也一樣。所以用redis 來持久化session。

這樣多個node 服務session 共用redis。

express的寫法,還是和以前一樣req.session.user=XX 即可。


參考:

http://www.yiibai.com/redis/redis_quick_guide.html


發佈了152 篇原創文章 · 獲贊 4 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章