17.2.1 在Windows下安装Redis
https://github.com/ServiceStack/redis-windows/tree/master/downloads
redis-server redis.windows.conf
17.3.1 在Java程序中使用Redis
http://mvnrepository.com/artifact/redis.clients/jedis/2.9.0
Java连接Redis
package com.ssm.chapter17.jedis;import redis.clients.jedis.Jedis;import redis.clients.jedis.JedisPool;import redis.clients.jedis.JedisPoolConfig;public class JedisTest { public void testJdedis(){ Jedis jedis = testPool().getResource(); //Jedis jedis = new Jedis("localhost", 6379);//连接Redis //jedis.auth("password");//如果需密码 int i =0;//记录操作次数 try{ long start = System.currentTimeMillis();// 开始毫秒数 while(true){ long end = System.currentTimeMillis(); if (end-start >= 1000) { // 当大于等于1000毫秒(相当于1秒)时,结束操作 break; } i++; jedis.set("test" + i, i + ""); } } finally{ // 关闭连接 jedis.close(); } System.out.println("redis每秒操作:" + i + "次");//打印1秒内对Redis的操作次数 }}
使用Redis连接池
private JedisPool testPool(){ JedisPoolConfig poolCfg = new JedisPoolConfig(); // 最大空闲数 poolCfg.setMaxIdle(50); // 最大连接数 poolCfg.setMaxTotal(100); // 最大等待毫秒数 poolCfg.setMaxWaitMillis(20000); // 使用配置创建连接池 JedisPool pool = new JedisPool(poolCfg, "localhost"); // 从连接池中获取单个连接 Jedis jedis = pool.getResource(); // 如果需密码 // jedis.auth("password") return pool; }
package com.ssm.chapter17.main;import com.ssm.chapter17.jedis.JedisTest;public class Chapter17Main { public static void main(String[] args) { testJedis();} private static void testJedis() { JedisTest jedisTest = new JedisTest(); jedisTest.testJdedis(); }}
17.3.2 在Spring中使用Redis
使用Spring配置JedisPoolConfig对象
配置JedisConnectionFactory
配置Spring RedisTemplate
使用Redis保存角色类对象
package com.ssm.chapter17.pojo;import java.io.Serializable;/** * 注意,对象要可序列化,需要实现Serializable接口,往往要重写serialVersionUID * * @author zhongzh * */public class Role implements Serializable{ /** * */ private static final long serialVersionUID = 6977402643848374753L; private long id; private String roleName; private String note; public long getId() { return id; } public void setId(long id) { this.id = id; } public String getRoleName() { return roleName; } public void setRoleName(String roleName) { this.roleName = roleName; } public String getNote() { return note; } public void setNote(String note) { this.note = note; } }
使用RedisTemplate保存Role对象
private static void testSpring() { ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); RedisTemplate redisTemplate = applicationContext.getBean(RedisTemplate.class); Role role = new Role(); role.setId(1L); role.setRoleName("role_name_1"); role.setNote("role_note_1"); redisTemplate.opsForValue().set("role_1", role); Role role1 = (Role) redisTemplate.opsForValue().get("role_1"); System.out.println(role.getRoleName()); }
使用SessionCallback接口
private static void testSessionCallback(){ ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); RedisTemplate redisTemplate = applicationContext.getBean(RedisTemplate.class); Role role = new Role(); role.setId(1); role.setRoleName("role_name_1"); role.setNote("role_note_1"); SessionCallbacksessionCallback = new SessionCallback () { public Role execute(RedisOperations ops) throws DataAccessException { // TODO Auto-generated method stub ops.boundValueOps("role_1").set(role); return (Role) ops.boundValueOps("role_1").get(); } }; Role savedRole = (Role) redisTemplate.execute(sessionCallback); System.out.println(savedRole.getId()); }
应改为:
private static void testSessionCallback(){ ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); RedisTemplate redisTemplate = applicationContext.getBean(RedisTemplate.class); final Role role = new Role(); role.setId(1); role.setRoleName("role_name_1"); role.setNote("role_note_1"); SessionCallbacksessionCallback = new SessionCallback () { public Role execute(RedisOperations ops) throws DataAccessException { // TODO Auto-generated method stub ops.boundValueOps("role_1").set(role); return (Role) ops.boundValueOps("role_1").get(); } }; Role savedRole = (Role) redisTemplate.execute(sessionCallback); System.out.println(savedRole.getId()); }