1下載window 版
https://github.com/ServiceStack/redis-windows
2、運行
下載完後,解壓找到32或64位版本解壓。放到d盤下。
cmd 進到目錄運行:
- redis-server.exe redis.conf
這個窗口要保持,關閉時redis服務會自動關閉。
3、測試
再開個cmd 運行:
redis-cli.exe
輸入SET foo bar //ok
KEYS* // foo
GET foo // bar
4、文件結構
- redis-benchmark.exe #基準測試
- redis-check-aof.exe # aof
- redis-check-dump.exe # dump
- redis-cli.exe # 客戶端
- redis-server.exe # 服務器
- 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 alpush 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