Redis是一個(gè)開源的使用ANSI C語言編寫、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型、Key-Value數(shù)據(jù)庫,并提供多種語言的API。它不僅支持簡(jiǎn)單的字符串鍵值對(duì),還提供了一系列數(shù)據(jù)結(jié)構(gòu)類型值,比如列表、哈希、集合和有序集,并在這些數(shù)據(jù)結(jié)構(gòu)類型上定義了一套強(qiáng)大的API 。接下來,我們來看看如何在Windows下安裝和使用Redis。
Redis在Windows下的安裝
1.下載Windows版的Redis
訪問Redis官網(wǎng)或直接前往GitHub:https://github.com/MSOpenTech/redis下載相應(yīng)版本的壓縮包。直接解壓。
2.啟動(dòng)服務(wù)器
Win+R快捷鍵,輸入CMD,進(jìn)入CMD窗口,進(jìn)入解壓后文件所在路徑,并輸入以下指令:
redis-server.exe redis.windows.conf
如圖,則服務(wù)啟動(dòng)成功。

3.啟動(dòng)客戶端
Win+R快捷鍵,輸入CMD,重新打開一個(gè)CMD窗口,進(jìn)入解壓后文件所在路徑,并輸入以下指令:
redis-cli.exe
如果設(shè)置了登錄密碼,則需要再輸入密碼才能登陸成功。
auth yourPasspord
如圖所示:

Redis常用命令
1.設(shè)置
設(shè)置密碼
CONFIG SET requirepass myPassword # 將密碼設(shè)置為 myPassword
清空密碼
CONFIG SET requirepass "" # 通過將密碼設(shè)為空字符來清空密碼
測(cè)試客戶端和服務(wù)端連接
ping
連接正常,返回一個(gè)PONG,不正常,返回錯(cuò)誤信息:Could not connect to Redis at 127.0.0.1:6379: Connection refused
退出客戶端,關(guān)閉與服務(wù)器的連接
quit
切換選擇數(shù)據(jù)庫
SELECT index
默認(rèn)情況下,我們選擇的是0號(hào)數(shù)據(jù)庫,通過數(shù)據(jù)庫索引號(hào) index 數(shù)值指定要切換的數(shù)據(jù)庫
2.String
Sds (Simple Dynamic String,簡(jiǎn)單動(dòng)態(tài)字符串)是Redis 底層所使用的字符串表示,它被用在幾乎所有的Redis 模塊中。
將字符串值 value 關(guān)聯(lián)到 key
SET key value [EX seconds] [PX milliseconds] [NX|XX]
如果 key 已經(jīng)持有其他值, SET 就覆寫舊值,無視類型。
對(duì)于某個(gè)原本帶有生存時(shí)間(TTL)的鍵來說, 當(dāng) SET命令成功在這個(gè)鍵上執(zhí)行時(shí), 這個(gè)鍵原有的 TTL 將被清除。
參數(shù):
EX second :設(shè)置鍵的過期時(shí)間為 second 秒。 SET key value EX second 效果等同于 SETEX key second value 。
PX millisecond :設(shè)置鍵的過期時(shí)間為 millisecond 毫秒。 SET key value PX millisecond 效果等同于 PSETEX key millisecond value 。
NX :只在鍵不存在時(shí),才對(duì)鍵進(jìn)行設(shè)置操作。 SET key value NX 效果等同于 SETNX key value 。
XX :只在鍵已經(jīng)存在時(shí),才對(duì)鍵進(jìn)行設(shè)置操作。
返回 key 所關(guān)聯(lián)的字符串值
GET key
返回key所關(guān)聯(lián)的字符串值。
如果key 不存在那么返回特殊值nil 。
假如 key儲(chǔ)存的值不是字符串類型,返回一個(gè)錯(cuò)誤,因?yàn)?GET 只能用于處理字符串值。
3.Hash
Redis hash是一個(gè)String類型的field和value的映射表,適合存儲(chǔ)對(duì)象。
Redis一個(gè)hash中可以存放2的32次方減1個(gè)鍵值對(duì)。
hmset hashname name "zhangshichao" description "zhangshichao "
查詢這個(gè)hash,
hgetall hashname
結(jié)果如圖:
獲取某一個(gè)hash的某一個(gè)key的值:
hget hashname name
刪除一個(gè)或多個(gè)hash的表字段:
hdel hashname name

判斷某個(gè)字段是否存在于某個(gè)hash表中
hexists hashname description
存在返回1,不存在返回0.
4.列表
Redis列表是簡(jiǎn)單的字符串列表,按照插入順序排序。
向list中插入多個(gè)值
一個(gè)列表最多可以包含 232 - 1 個(gè)元素。
lpush listname redis mongodb sqlServer
獲取list的長度
llen listname
在列表中添加一個(gè)或多個(gè)值
rpush listname hbase
獲取列表中指定范圍的元素(從0開始計(jì)算)
lrange listname 0 2

根據(jù)索引獲得列表中的元素
lindex listname 1
移除并獲取列表中的第一個(gè)元素
lpop listname
移除列表中的元素
lrem listname 1 mongodb
4.set
Redis的Set是String類型的無序集合,集合成員必須唯一,它是通過hash表實(shí)現(xiàn)的,所以添加,刪除,查找的復(fù)雜度都是 O(1)。集合中最大的成員數(shù)為 232 - 1。
存儲(chǔ)
sadd setname redis mongodb
查詢
smembers setname
刪除集合中的一個(gè)或多個(gè)成員
srem setname mongodb