新聞中心
一、redis的安裝
這里演示的版本是Redis4.0.6,Linux系統(tǒng)是centos6.7,Jdk1.7,Jedis2.8.1

成都創(chuàng)新互聯(lián)是一家專注于成都做網(wǎng)站、網(wǎng)站建設(shè)與策劃設(shè)計,周口網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:周口等地區(qū)。周口做網(wǎng)站價格咨詢:028-86922220
這是官方文檔介紹的安裝方式
下載,解壓,編譯:
$ wget http://download.redis.io/releases/redis-4.0.6.tar.gz $ tar xzf redis-4.0.6.tar.gz $ cd redis-4.0.6 $ make
二進制文件是編譯完成后在src目錄下,通過下面的命令啟動Redis服務(wù):
$ src/redis-server
你可以使用內(nèi)置的客戶端命令redis-cli進行使用:
$ src/redis-cli redis> set foo bar OK redis> get foo "bar"
當然,個人不建議直接使用源碼文件中的服務(wù),make編譯完成后,可以安裝到指定目錄:
make PREFIX=/usr/local/redis install
現(xiàn)在去剛剛tar包解壓出來的源碼目錄中,拷貝一個redis.conf配置文件,放到/usr/local/redis/bin/目錄下
以后在這個目錄下使用就好了
啟動服務(wù)(暫時不使用自己剛才復制過來的redis.conf配置文件)
./redis-server
服務(wù)端啟動成功
啟動客戶端(暫時不設(shè)置ip,端口號和密碼)
./redis-cli
客戶端啟動成功
二、Java程序中jedis操作redis
上面的方式只是一種小練習,我們現(xiàn)在通過Java程序用jedis來操作Linux服務(wù)器上的redis。
用maven來引入jedis:
redis.clients jedis 2.8.1
Java代碼:
public static void main(String[] args) { // 虛擬機設(shè)置的ip,redis默認端口號
Jedis jedis = new Jedis("192.168.133.128", 6379); jedis.set("key01", "zhangsan"); jedis.set("key02", "lisi"); System.out.println(jedis.get("key01")); }注意上面的代碼是有問題的!
三、redis配置文件
上面的代碼運行后,會報錯
redis.clients.jedis.exceptions.JedisConnectionException: java.net.ConnectException: Connection refused: connect
連接超被拒絕了,這是因為,redis的訪問ip默認是127.0.0.1
你需要在自己拷貝的redis.conf配置文件中修改:
文檔很長,可以通過"/"命令來查找"bind"字符串,按n搜索下一個
:/bind
把綁定的主機ip添加進去,之后啟動redis服務(wù)的時候,需要手動加載配置文件
我的配置文件放在了和server服務(wù)的同一個目錄里,所以啟動服務(wù)時輸入:
./redis-server redis.conf
注意?。喝绻惠斎牒竺娴呐渲梦募夸?,那么該配置文件不起作用,會提示說啟動默認的配置文件。
之后再次運行Java代碼
又報錯??!
redis.clients.jedis.exceptions.JedisDataException: DENIED Redis is running in protected mode because protected mode is enabled, no bind address was specified, no authentication password is requested to clients. In this mode connections are only accepted from the loopback interface. If you want to connect from external computers to Redis you may adopt one of the following solutions: 1) Just disable protected mode sending the command 'CONFIG SET protected-mode no' from the loopback interface by connecting to Redis from the same host the server is running, however MAKE SURE Redis is not publicly accessible from internet if you do so. Use CONFIG REWRITE to make this change permanent. 2) Alternatively you can just disable the protected mode by editing the Redis configuration file, and setting the protected mode option to 'no', and then restarting the server. 3) If you started the server manually just for testing, restart it with the '--protected-mode no' option. 4) Setup a bind address or an authentication password. NOTE: You only need to do one of the above things in order for the server to start accepting connections from the outside.
這錯報的好長。。
好心的博主幫你谷歌翻譯了一下。
簡單來說呢?就是給你提供了幾個解決方案
1)只需禁用保護模式,即可通過從同一主機連接到Redis,從回送接口發(fā)送命令“CONFIG SET protected-mode no”正在運行,但是如果您這樣做,請勿使用互聯(lián)網(wǎng)公開訪問互聯(lián)網(wǎng)。使用CONFIG REWRITE使此更改永久。
2)或者,您可以通過編輯Redis配置文件并將protected mode選項設(shè)置為“no”來禁用保護模式,然后重新啟動服務(wù)器。
3)如果您只是為了測試而手動啟動服務(wù)器,請使用“ --protected-mode no”選項重新啟動服務(wù)器。
4)設(shè)置綁定地址或認證密碼。
這是redis4.0版本的新特性,redis3不會報錯。
在這里我選擇設(shè)置redis密碼,同樣打開redis.conf配置文件,設(shè)置密碼為123456,保存退出
然后啟動服務(wù)器
之后你要想在Linux里用命令打開redis客戶端,需要輸入一些參數(shù)
很顯然,-h是redis服務(wù)綁定的主機ip,-p是redis服務(wù)的端口號,-a是redis服務(wù)的密碼,都可以在redis.conf里更改的
然后就好了
這個時候,Java代碼中的問題還沒解決完,運行還會報錯的,沒有訪問權(quán)限
redis.clients.jedis.exceptions.JedisDataException: NOAUTH Authentication required.
你還需要在Java代碼中增加一條密碼設(shè)置
public static void main(String[] args) {
// 虛擬機的設(shè)置的ip,,redis默認端口號
Jedis jedis = new Jedis("192.168.133.128", 6379);
// redis訪問密碼
jedis.auth("123456");
jedis.set("key01", "zhangsan");
jedis.set("key02", "lisi");
System.out.println(jedis.get("key01"));
}OK,運行正常
http://www.runoob.com/redis/redis-intro.html
redis.conf 配置項說明如下:
1. Redis默認不是以守護進程的方式運行,可以通過該配置項修改,使用yes啟用守護進程,可以后臺啟動,用ps -ef | grep redis查看redis進程
daemonize no
2. 當Redis以守護進程方式運行時,Redis默認會把pid寫入/var/run/redis.pid文件,可以通過pidfile指定
pidfile /var/run/redis.pid
3. 指定Redis監(jiān)聽端口,默認端口為6379,作者在自己的一篇博文中解釋了為什么選用6379作為默認端口,因為6379在手機按鍵上MERZ對應(yīng)的號碼,而MERZ取自意大利歌女Alessia Merz的名字
port 6379
4. 綁定的主機地址
bind 127.0.0.1
5.當 客戶端閑置多長時間后關(guān)閉連接,如果指定為0,表示關(guān)閉該功能
timeout 300
6. 指定日志記錄級別,Redis總共支持四個級別:debug、verbose、notice、warning,默認為verbose
loglevel verbose
7. 日志記錄方式,默認為標準輸出,如果配置Redis為守護進程方式運行,而這里又配置為日志記錄方式為標準輸出,則日志將會發(fā)送給/dev/null
logfile stdout
8. 設(shè)置數(shù)據(jù)庫的數(shù)量,默認數(shù)據(jù)庫為0,可以使用SELECT
databases 16
9. 指定在多長時間內(nèi),有多少次更新操作,就將數(shù)據(jù)同步到數(shù)據(jù)文件,可以多個條件配合
save
Redis默認配置文件中提供了三個條件:
save 900 1
save 300 10
save 60 10000
分別表示900秒(15分鐘)內(nèi)有1個更改,300秒(5分鐘)內(nèi)有10個更改以及60秒內(nèi)有10000個更改。
10. 指定存儲至本地數(shù)據(jù)庫時是否壓縮數(shù)據(jù),默認為yes,Redis采用LZF壓縮,如果為了節(jié)省CPU時間,可以關(guān)閉該選項,但會導致數(shù)據(jù)庫文件變的巨大
rdbcompression yes
11. 指定本地數(shù)據(jù)庫文件名,默認值為dump.rdb
dbfilename dump.rdb
12. 指定本地數(shù)據(jù)庫存放目錄
dir ./
13. 設(shè)置當本機為slav服務(wù)時,設(shè)置master服務(wù)的IP地址及端口,在Redis啟動時,它會自動從master進行數(shù)據(jù)同步
slaveof
14. 當master服務(wù)設(shè)置了密碼保護時,slav服務(wù)連接master的密碼
masterauth
15. 設(shè)置Redis連接密碼,如果配置了連接密碼,客戶端在連接Redis時需要通過AUTH
requirepass foobared
16. 設(shè)置同一時間最大客戶端連接數(shù),默認無限制,Redis可以同時打開的客戶端連接數(shù)為Redis進程可以打開的最大文件描述符數(shù),如果設(shè)置 maxclients 0,表示不作限制。當客戶端連接數(shù)到達限制時,Redis會關(guān)閉新的連接并向客戶端返回max number of clients reached錯誤信息
maxclients 128
17. 指定Redis最大內(nèi)存限制,Redis在啟動時會把數(shù)據(jù)加載到內(nèi)存中,達到最大內(nèi)存后,Redis會先嘗試清除已到期或即將到期的Key,當此方法處理 后,仍然到達最大內(nèi)存設(shè)置,將無法再進行寫入操作,但仍然可以進行讀取操作。Redis新的vm機制,會把Key存放內(nèi)存,Value會存放在swap區(qū)
maxmemory
18. 指定是否在每次更新操作后進行日志記錄,Redis在默認情況下是異步的把數(shù)據(jù)寫入磁盤,如果不開啟,可能會在斷電時導致一段時間內(nèi)的數(shù)據(jù)丟失。因為 redis本身同步數(shù)據(jù)文件是按上面save條件來同步的,所以有的數(shù)據(jù)會在一段時間內(nèi)只存在于內(nèi)存中。默認為no
appendonly no
19. 指定更新日志文件名,默認為appendonly.aof
appendfilename appendonly.aof
20. 指定更新日志條件,共有3個可選值:
no:表示等操作系統(tǒng)進行數(shù)據(jù)緩存同步到磁盤(快)
always:表示每次更新操作后手動調(diào)用fsync()將數(shù)據(jù)寫到磁盤(慢,安全)
everysec:表示每秒同步一次(折衷,默認值)
appendfsync everysec
21. 指定是否啟用虛擬內(nèi)存機制,默認值為no,簡單的介紹一下,VM機制將數(shù)據(jù)分頁存放,由Redis將訪問量較少的頁即冷數(shù)據(jù)swap到磁盤上,訪問多的頁面由磁盤自動換出到內(nèi)存中(在后面的文章我會仔細分析Redis的VM機制)
vm-enabled no
22. 虛擬內(nèi)存文件路徑,默認值為/tmp/redis.swap,不可多個Redis實例共享
vm-swap-file /tmp/redis.swap
23. 將所有大于vm-max-memory的數(shù)據(jù)存入虛擬內(nèi)存,無論vm-max-memory設(shè)置多小,所有索引數(shù)據(jù)都是內(nèi)存存儲的(Redis的索引數(shù)據(jù) 就是keys),也就是說,當vm-max-memory設(shè)置為0的時候,其實是所有value都存在于磁盤。默認值為0
vm-max-memory 0
24. Redis swap文件分成了很多的page,一個對象可以保存在多個page上面,但一個page上不能被多個對象共享,vm-page-size是要根據(jù)存儲的 數(shù)據(jù)大小來設(shè)定的,作者建議如果存儲很多小對象,page大小最好設(shè)置為32或者64bytes;如果存儲很大大對象,則可以使用更大的page,如果不 確定,就使用默認值
vm-page-size 32
25. 設(shè)置swap文件中的page數(shù)量,由于頁表(一種表示頁面空閑或使用的bitmap)是在放在內(nèi)存中的,,在磁盤上每8個pages將消耗1byte的內(nèi)存。
vm-pages 134217728
26. 設(shè)置訪問swap文件的線程數(shù),最好不要超過機器的核數(shù),如果設(shè)置為0,那么所有對swap文件的操作都是串行的,可能會造成比較長時間的延遲。默認值為4
vm-max-threads 4
27. 設(shè)置在向客戶端應(yīng)答時,是否把較小的包合并為一個包發(fā)送,默認為開啟
glueoutputbuf yes
28. 指定在超過一定的數(shù)量或者最大的元素超過某一臨界值時,采用一種特殊的哈希算法
hash-max-zipmap-entries 64
hash-max-zipmap-value 512
29. 指定是否激活重置哈希,默認為開啟(后面在介紹Redis的哈希算法時具體介紹)
activerehashing yes
30. 指定包含其它的配置文件,可以在同一主機上多個Redis實例之間使用同一份配置文件,而同時各個實例又擁有自己的特定配置文件
include /path/to/local.conf
分享名稱:CentOS6.7下Redis4.0.6安裝和Jedis2.8.1簡單使用
新聞來源:http://m.fisionsoft.com.cn/article/dhpeohd.html


咨詢
建站咨詢
