環境準備java
Reidsredis
1/ 先去官網下載源碼:數據庫
wget http://redis.googlecode.com/files/redis-2.4.6.tar.gztomcat
2/ 解壓:tar –zxvf redis-2.4.6.tar.gz服務器
3/ 編譯session
須要說明的事,redis的安裝很是簡單,已經有現成的Makefile文件,直接運行make命令便可。app
makejsp
make install工具
Redis 由四個可執行文件:redis-benchmark、redis-cli、redis-server、redis-stat 這四個文件,加上一個redis.conf就構成了整個redis的最終可用包。它們的做用以下:性能
redis-server:Redis服務器的daemon啓動程序
redis-cli:Redis命令行操做工具。固然,你也能夠用telnet根據其純文本協議來操做
redis-benchmark:Redis性能測試工具,測試Redis在你的系統及你的配置下的讀寫性能
redis-stat:Redis狀態檢測工具,能夠檢測Redis當前狀態參數及延遲情況
如今就能夠啓動redis了,redis只有一個啓動參數,就是他的配置文件路徑。
redis-server /etc/redis.conf
注意,默認複製過去的redis.conf文件的daemonize參數爲no,因此redis不會在後臺運行,這時要測試,咱們須要從新開一個終端。修改成yes則爲後臺運行redis。另外配置文件中規定了pid文件,log文件和數據文件的地址,若是有須要先修改,默認log信息定向到stdout.
4/ 下面是redis.conf的主要配置參數的意義:
daemonize:是否之後臺daemon方式運行
pidfile:pid文件位置
port:監聽的端口號
timeout:請求超時時間
loglevel:log信息級別
logfile:log文件位置
databases:開啓數據庫的數量
save * *:保存快照的頻率,第一個*表示多長時間,第三個*表示執行多少次寫操做。在必定時間內執行必定數量的寫操做時,自動保存快照。可設置多個條件。
rdbcompression:是否使用壓縮
dbfilename:數據快照文件名(只是文件名,不包括目錄)
dir:數據快照的保存目錄(這個是目錄)
appendonly:是否開啓appendonlylog,開啓的話每次寫操做會記一條log,這會提升數據抗風險能力,但影響效率。
appendfsync:appendonlylog如何同步到磁盤(三個選項,分別是每次寫都強制調用fsync、每秒啓用一次fsync、不調用fsync等待系統本身同步)
5/ 這時你能夠打開一個終端進行測試了,配置文件中默認的監聽端口是6379
咱們能夠開啓一個Redis客戶端進行測試
[zhangqi.dzq@v069197102 /usr/local/redis-3.0.6]$ src/redis-cli
127.0.0.1:6379>
6/ 遠程java鏈接測試
下載jar包
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.0.0</version> </dependency>
上傳到服務器,個人上傳位置~/classpath/jedis-2.0.0.jar
編寫java代碼
import redis.clients.jedis.Jedis; public class RedisJava { public static void main(String[] args) { //Connecting to Redis server on localhost Jedis jedis = new Jedis("100.69.197.102",6379); System.out.println("Connection to server sucessfully"); //check whether server is running or not System.out.println("Server is running: "+jedis.ping()); } }
編譯運行java類,成功
[root@iZ23bw4wy5uZ ~/java]#javac -cp /home/zhangqi.dzq/classpath/jedis-2.8.0.jar /home/zhangqi.dzq/jscript/RedisJava.java [root@iZ23bw4wy5uZ ~/java]#java -cp /home/zhangqi.dzq/classpath/jedis-2.8.0.jar:/home/zhangqi.dzq/jscript RedisJava Connection to server sucessfully Server is running: PONG
Tomcat配置RedisSessionManager
下載配置tomcat
下載4個jar包(請注意版本,版本不合適會報異常)到tomcat的lib下
編輯context.xml
文本形式(供拷貝^_^)
<Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve" /> <Manager className="com.radiadesign.catalina.session.RedisSessionManager" host="localhost" port="6379" database="0" maxInactiveInterval="60" />
啓動tomcat:./bin/startup.sh,查看logs/catalina.out的信息中包含如下內容,則RedisSessionManager配置生效
Jan 07, 2016 8:07:41 PM com.radiadesign.catalina.session.RedisSessionManager startInternal INFO: Attached to RedisSessionHandlerValve Jan 07, 2016 8:07:41 PM com.radiadesign.catalina.session.RedisSessionManager initializeSerializer INFO: Attempting to use serializer :com.radiadesign.catalina.session.JavaSerializer Jan 07, 2016 8:07:41 PM com.radiadesign.catalina.session.RedisSessionManager startInternal INFO: Will expire sessions after 1800 seconds
將當期tomcat目錄命名爲tomcat1,從新拷貝一份命名爲tomcat2(同一臺機器環境模擬集羣的狀況,須要修改server.xml下的http、ajp端口號,保證tomcat1與tomcat2端口不相同)
測試
啓動redis、tomcat一、tomcat2
1 / 查看redis全部數據,能夠看出爲空。
[root@iZ23bw4wy5uZ ~]# redis-cli 127.0.0.1:6379> keys * (empty list or set)
2/ 訪問tomcat1下的應用頁面後
http://120.26.223.48:8080/site/login.jsp
查看redis數據,sessionId已經保存下來。
[root@iZ23bw4wy5uZ ~]# redis-cli 127.0.0.1:6379> keys * 1) "D49AD5115560A12185DBDF372637BAD5"
3/ 訪問tomcat2下的應用頁面後
http://120.26.223.48:8090/site/login.jsp
查看redis數據,是同一個sessionId
[root@iZ23bw4wy5uZ ~]# redis-cli 127.0.0.1:6379> keys * 1) "D49AD5115560A12185DBDF372637BAD5"