版本介紹
Redis 借鑒了 Linux 操作系統(tǒng)對于版本號的命名規(guī)則:版本號第二位如果是奇數(shù)要门,則為非穩(wěn)定版本(例如2.7、2.9、3.1)锰茉,如果是偶數(shù),則為穩(wěn)定版本(例如2.6切心、2.8飒筑、3.0、3.2)绽昏。當(dāng)前奇數(shù)版本就是下一個穩(wěn)定版本的開發(fā)版本协屡,例如 2.9 版本是 3.0 版本的開發(fā)版本。所以我們在生產(chǎn)環(huán)境通常選取偶數(shù)版本的 Redis全谤,如果對于某些新的特性想提前了解和使用肤晓,可以選擇最新的奇數(shù)版本。
Redis 3.0
最大的改動就是添加 Redis 的分布式實(shí)現(xiàn) Redis Cluster认然,填補(bǔ)了
Redis 官方?jīng)]有分布式實(shí)現(xiàn)的空白补憾。Redis Cluster 經(jīng)歷了4年才正式發(fā)布也是有原因的,具體可以參考 Redis Cluster 的開發(fā)日志卷员。
Redis 4.0
可能出乎很多人的意料盈匾,Redis3.2 之后的版本是 4.0,而不是 3.4毕骡、3.6削饵、3.8。下面列出 Redis4.0 的新特性:
1)提供了模塊系統(tǒng)未巫,方便第三方開發(fā)者拓展 Redis 的功能窿撬,更多模塊詳見:http://redismodules.com。
2)PSYNC 2.0:優(yōu)化了之前版本中橱赠,主從節(jié)點(diǎn)切換必然引起全量復(fù)制的問題尤仍。
3)提供了新的緩存剔除算法:LFU(Last Frequently Used)箫津,并對已有57算法進(jìn)行了優(yōu)化狭姨。
4)提供了非阻塞 del 和 flushall/flushdb 功能,有效解決刪除bigkey可能造成的Redis阻塞苏遥。
5)提供了 RDB-AOF 混合持久化格式饼拍,充分利用了 AOF 和 RDB 各自優(yōu)勢。
6)提供 memory 命令田炭,實(shí)現(xiàn)對內(nèi)存更為全面的監(jiān)控統(tǒng)計(jì)师抄。
7)提供了交互數(shù)據(jù)庫功能,實(shí)現(xiàn)Redis內(nèi)部數(shù)據(jù)庫之間的數(shù)據(jù)置換教硫。
8)Redis Cluster兼容 NAT 和 Docker
Window 版的安裝
Releases · microsoftarchive/redis
https://github.com/microsoftarchive/redis/releases
打開一個 cmd 窗口 使用 cd 命令切換目錄到 redis 解壓運(yùn)行:
redis-server redis.windows.conf
這時候另啟一個 cmd 窗口叨吮,原來的不要關(guān)閉辆布,否則無法訪問服務(wù)端了。
切換到 redis 目錄下運(yùn)行: redis-cli.exe
或者直接雙擊 exe茶鉴。
Windows 版的 Redis 配置介紹
Redis 的配置文件位于 Redis 安裝目錄下锋玲,文件名為 redis.conf。
你可以通過 CONFIG 命令查看或設(shè)置配置項(xiàng)涵叮。
CONFIG GET CONFIG_SETTING_NAME
你可以通過修改 redis.conf 文件或使用 CONFIG set 命令來修改配置惭蹂。
以下是個示例:
redis 127.0.0.1:6379> CONFIG SET loglevel "notice"
OK
redis 127.0.0.1:6379> CONFIG GET loglevel
1) "loglevel"
2) "notice"
使用 docker 安裝 redis【推薦】
特別是 redis 對 windows 支持不友好,建議使用 docker 方式進(jìn)行安裝割粮。
docker pull redis
docker run --name myredis -itd -p 6379:6379 redis:latest
mac 版的安裝
brew install redis
To have launchd start redis now and restart at login:
brew services start redis
Or, if you don't want/need a background service you can just run:
redis-server /usr/local/etc/redis.conf
Linux下 Redis 安裝
方式一:yum 安裝
以 cent OS 為例, yum install redis -y
如果是這種形式安裝的 redis 建議通過 systemctl start redis 進(jìn)行啟動和管理盾碗。
如果是通過 yum 命令自動安裝的, 建議直接通過 systemctl start redis 啟動即可舀瓢。沒必要通過 redis-server 命令選取配置文件進(jìn)行啟動廷雅。而默認(rèn)的配置文件可通過 rpm -ql redis
進(jìn)行查找,一般是 /etc/redis.conf
文件氢伟。
安裝完畢后榜轿,即可使用下面的命令啟動 redis 服務(wù)
// 服務(wù)狀態(tài)
# service redis status
// 服務(wù)啟動
# service redis start
// 服務(wù)停止
# service redis stop
// 服務(wù)重啟
# service redis restart
如果是 systemctl start redis.service 啟動的服務(wù)可通過
systemctl start redis
設(shè)置為開機(jī)自動啟動
systemctl enable redis.service
進(jìn)行查看狀態(tài)
systemctl status redis.service
方式二:手動下載并安裝
去 redis 官網(wǎng)找到下載連接,這里我是在中文官網(wǎng)里面找朵锣,得到如下地址:http://download.redis.io/releases/redis-5.0.4.tar.gz
下載 redis 并解壓
wget http://download.redis.io/releases/redis-5.0.4.tar.gz
tar -xvf redis-5.0.4.tar.gz
cd redis-5.0.4/
編譯和安裝
make install PREFIX=/usr/local/mysoft/redis
后面是你自己的安裝路徑谬盐。PREFIX 參數(shù)指定 redis 的安裝目錄。一般軟件安裝到/usr目錄下
修改配置文件诚些。由于安裝目錄僅僅是二進(jìn)制文件飞傀,不包含配置文件,這里我們要把編譯目錄的配置文件拷貝過來诬烹,我們先進(jìn)入到安裝目錄砸烦, cd /usr/local/mysoft/redis
拷貝配置文件,順便命名為 single.conf
cp /home/redis/redis-5.0.4/redis.conf single.conf
此處可以按需選擇是否開啟后臺運(yùn)行。若要開啟绞吁,需要輸入 /daemon 進(jìn)行搜索幢痘,找到 daemonize no 并保存.
啟動 redis
cd /usr/local/mysoft/redis
bin/redis-server single.conf
Linux 驗(yàn)證 redis 安裝是否成功
查看 redis 服務(wù)是否在運(yùn)行
ps aux | grep redis
或ps -ef | grep redis
通過 redis 指定的端口號,默認(rèn)為 6379家破。檢查 Redis 服務(wù)器狀態(tài):
netstat -nlt | grep 6379
linux 環(huán)境下查看 redis 的版本:
查看 redis 的版本有兩種方式:
redis-server --version 和 redis-server -v
或者
redis-cli --version 和 redis-cli -v
嚴(yán)格上說:通過 redis-cli 得到的結(jié)果應(yīng)該是 redis-cli 的版本颜说,但是 redis-cli 和redis-server 一般都是從同一套源碼編譯出的。所以應(yīng)該是一樣的汰聋。
redis 配置
配置支持遠(yuǎn)程連接
Redis 開啟遠(yuǎn)程登錄連接门粪,redis 默認(rèn)只能 localhost 訪問,所以需要開啟遠(yuǎn)程登錄烹困。
解決方法如下:
修改 redis.conf (通過yum 安裝的 redis 配置文件一般都在 /etc/redis.conf)玄妈,將 bind 127.0.0.1 ::1 這一行注釋掉 或者 將 bind 改為 0.0.0.0。
注意:修改后需要重啟才能生效,如還不能訪問拟蜻,請確認(rèn)是否防火墻開放了端口 6379绎签。
設(shè)置 redis 密碼
在配置文件(/etc/redis.conf)中有個參數(shù): requirepass 這個就是配置 redis 訪問密碼的參數(shù)。
比如
requirepass mypasswordissosososososososoLong_
redis 客戶端設(shè)置連接
如果需要在遠(yuǎn)程 redis 服務(wù)上執(zhí)行命令酝锅,同樣我們使用的也是 redis-cli 命令辜御。
語法格式
$ redis-cli -h MY-HOST -p MY-PORT -a MY-PASSWORD
連接 redis
redis-cli
連接本機(jī)
cd /usr/local/mysoft/redis/bin/
./redis-cli -h 127.0.0.1
- -p 6379 如果采用默認(rèn)端口, 則6379可以不寫
- -a password 其實(shí)也可以先不寫, 進(jìn)入后可以 auth "password " 進(jìn)行認(rèn)證
若連接的是集群, 需要加上 -c
參數(shù). 否則報(bào)錯(error) MOVED 6257 192.168.30.141:7001
另外在登錄 redis 后也可用通過 auth 輸入密碼進(jìn)行授權(quán)。
$ redis-cli -h MY-HOST -p MY-PORT
auth MY-PASSWORD
關(guān)閉 redis 服務(wù)
登錄 redis-cli 后執(zhí)行 shutdown 命令即可
或者直接連接 redis-cli 并加上 shutdown命令
Redis 客戶端推薦
Redis Desktop Manager (aka RDM)
is a fast Redis database management application for Windows, Linux, MacOS and iPadOS.
https://redisdesktop.com/
雖收費(fèi), 但是很好用
RedisView
RedisView 長得丑, 在 mac 上配色很糟心, 不推薦
https://github.com/cc20110101/RedisView/releases/
Java 客戶端
Lettuce
https://lettuce.io/
lettuce-io/lettuce-core: Advanced Java Redis client for thread-safe sync, async, and reactive usage. Supports Cluster, Sentinel, Pipelining, and codecs.
https://github.com/lettuce-io/lettuce-core
Jedis
redis/jedis: Redis Java client designed for performance and ease of use. https://github.com/redis/jedis/
redis-Jedis 連接集群配置
public void testJedisCluster() throws Exception {
//創(chuàng)建一連接屈张,JedisCluster對象,在系統(tǒng)中是單例存在
Set<HostAndPort> nodes = new HashSet<>();
nodes.add(new HostAndPort("127.0.0.1", 7001));
nodes.add(new HostAndPort("127.0.0.1", 7002));
nodes.add(new HostAndPort("127.0.0.1", 7003));
nodes.add(new HostAndPort("127.0.0.1", 7004));
nodes.add(new HostAndPort("127.0.0.1", 7005));
nodes.add(new HostAndPort("127.0.0.1", 7006));
JedisCluster cluster = new JedisCluster(nodes);
// 執(zhí)行 JedisCluster 對象中的方法擒权,方法和redis一一對應(yīng)。
cluster.set("cluster-test", "my jedis cluster test");
String result = cluster.get("cluster-test");
System.out.println(result);
// 程序結(jié)束時需要關(guān)閉JedisCluster對象
cluster.close();
}