什么是Redis?
Redis是一個可以持久化的緩存框架,支持分布式緩存,簡單易用。類似的框架還有memcached,是一個Key-Value形式存儲的緩存框架。
可以作為緩存的框架有:
EHCache
MongoDB 更偏向存儲,而不是緩存
Redis 更偏向於緩存,而非存儲
Memcached
Redis的安裝和配置
1、先安裝gcc
yum -y install gcc
redis的安裝和使用步驟
步驟:
一、安裝
wget http://download.redis.io/releases/redis-3.2.9.tar.gz
tar xzf redis-3.2.9.tar.gz
cd redis-3.2.9
View Code
View Code
View Code
View Code
tar xzf redis-3.2.9.tar.gz
cd redis-3.2.9
make MALLOC=libc
二、啟動Redis服務
src/redis-server
如果要通過Java遠程連接到Redis服務,還需要修改redis.conf文件
Java遠程連接Linux服務器中的Redis
配置Linux服務器上的Redistribution服務,允許遠程調用。
修改Redis的配置文檔
在redis安裝目錄下的redis.conf文件中的如下內容:
1、注釋掉redis安裝目錄下的redis.conf文件中的如下數據:bind 127.0.0.1,修改后為#bind 127.0.0.1
2、修改保護模式為非:默認為protected-mode yes ,修改后為protected-mode no
3、設置redis連接密碼:找到#requirepass foobared ,在下面添加requirepass 123456
然后啟動redis server:
./redis-server redis.conf
在以上過程中可能會需要重啟redis server,終止和重啟的命令如下:
1、終止,通過殺死redis的進程
kill -9 進程ID (解釋:-9的含義是強制殺死)
進程ID可以通過如下命令查詢:
ps -ef | grep 'redis'
三、啟動客戶端並測試
src/redis-cli
帶密碼的啟動方式
./redis-cli -h 127.0.0.1 -p 6379 -a 123456
-h 是主機IP地址
-p 是端口號
-a 是密碼
最后在Java代碼中調用Redis。(使用Jedis方式調用)
1、導包:

1 <!-- https://mvnrepository.com/artifact/redis.clients/jedis --> 2 <dependency> 3 <groupId>redis.clients</groupId> 4 <artifactId>jedis</artifactId> 5 <version>2.9.0</version> 6 </dependency>
2、代碼:

1 JedisShardInfo sharInfo = new JedisShardInfo("192.168.72.188", 6379); 2 sharInfo.setPassword("123456"); 3 Jedis jedis = new Jedis(sharInfo); 4 String result = jedis.set("name", "zhangsan"); 5 System.out.println(result); 6 String name = jedis.get("name"); 7 System.out.println(name); 8 jedis.close();
3、Java中Redis池

1 JedisPoolConfig config = new JedisPoolConfig(); 2 config.setMaxIdle(1000);//最大空閑時間 3 config.setMaxWaitMillis(1000); //最大等待時間 4 config.setMaxTotal(500); //redis池中最大對象個數 5 6 JedisShardInfo sharInfo = new JedisShardInfo("192.168.72.188", 6379); 7 sharInfo.setPassword("123456"); 8 List<JedisShardInfo> list = new ArrayList<JedisShardInfo>(); 9 list.add(sharInfo); 10 ShardedJedisPool pool = new ShardedJedisPool(config, list); 11 ShardedJedis jedis2 = pool.getResource(); 12 jedis2.set("haha", "測試"); 13 System.out.println(jedis2.get("haha"));
可能會出現的BUG:

redis.clients.jedis.exceptions.JedisDataException: MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error. at redis.clients.jedis.Protocol.processError(Protocol.java:127) at redis.clients.jedis.Protocol.process(Protocol.java:161) at redis.clients.jedis.Protocol.read(Protocol.java:215) at redis.clients.jedis.Connection.readProtocolWithCheckingBroken(Connection.java:340) at redis.clients.jedis.Connection.getStatusCodeReply(Connection.java:239) at redis.clients.jedis.Jedis.set(Jedis.java:121) at redis.clients.jedis.ShardedJedis.set(ShardedJedis.java:43) at com.javen.redis.RedisTest.testHelloWorld(RedisTest.java:29) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at junit.framework.TestCase.runTest(TestCase.java:154) at junit.framework.TestCase.runBare(TestCase.java:127) at junit.framework.TestResult$1.protect(TestResult.java:106) at junit.framework.TestResult.runProtected(TestResult.java:124) at junit.framework.TestResult.run(TestResult.java:109) at junit.framework.TestCase.run(TestCase.java:118) at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:131) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
解決:
登錄到redis客戶端,然后輸入如圖紅色方框中的命令:

config set stop-writes-on-bgsave-error no