Spring+redis整合
来源:互联网 发布:淘宝怎么用银行卡分期 编辑:程序博客网 时间:2024/05/16 07:48
一、引入依赖jar包
<!--Redis start --><dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-redis</artifactId><version>1.6.1.RELEASE</version></dependency><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.7.3</version></dependency> <!--Redis end -->
二、编写redis.properties
#redis中心redis.host=192.168.207.131redis.port=6379redis.pass=123456redis.maxIdle=100redis.maxTotal=300redis.maxWaitMillis=1000redis.testOnBorrow=trueredis.timeout=100000
三、配置applicationContext-redis.xml
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:context="http://www.springframework.org/schema/context"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd "><!-- 加载properties文件 --><context:property-placeholder location="classpath:redis.properties"/><bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig"> <property name="maxIdle" value="${redis.maxIdle}" /> <property name="maxTotal" value="${redis.maxTotal}" /> <property name="maxWaitMillis" value="${redis.maxWaitMillis}" /> <property name="testOnBorrow" value="${redis.testOnBorrow}" /> </bean><bean id="connectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"> <property name="hostName" value="${redis.host}"/> <property name="port" value="${redis.port}"/> <property name="password" value="${redis.pass}"/> <property name="poolConfig" ref="poolConfig"/> </bean> <!-- <bean id="redisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate"> --><!-- <property name="connectionFactory" ref="connectionFactory" /> --><!-- </bean> --> <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate" > <property name="connectionFactory" ref="connectionFactory" /> <property name="keySerializer" > <bean class="org.springframework.data.redis.serializer.StringRedisSerializer" /> </property> <property name="valueSerializer" > <bean class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer" /> </property> </bean > <bean id="userDao" class="com.my.ssm.dao.impl.UserDaoImpl"> <property name="redisTemplate" ref="redisTemplate" /> </bean> </beans>
四、User类、UserDao、UserDaoImpl
public interface UserDao {boolean add(User user);boolean add(List<User> list);void delete(String key);void delete(List<String> keys);boolean update(User user);User get(String keyid);}
package com.my.ssm.dao.impl;import java.util.List;import org.springframework.dao.DataAccessException;import org.springframework.data.redis.connection.RedisConnection;import org.springframework.data.redis.core.RedisCallback;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.data.redis.core.ValueOperations;import org.springframework.data.redis.serializer.RedisSerializer;import com.my.ssm.dao.UserDao;import com.my.ssm.po.User;public class UserDaoImpl implements UserDao {private RedisTemplate<String, User> redisTemplate;public void setRedisTemplate(RedisTemplate<String, User> redisTemplate) {this.redisTemplate = redisTemplate;}@Overridepublic boolean add(final User user) {boolean result = redisTemplate.execute(new RedisCallback<Boolean>() {@Overridepublic Boolean doInRedis(RedisConnection connection)throws DataAccessException {RedisSerializer<String> redisSerializer = redisTemplate.getStringSerializer();byte[] key = redisSerializer.serialize(user.getId().toString());byte[] name = redisSerializer.serialize(user.getUsername());return connection.setNX(key, name);}});return result;}@Overridepublic boolean add(final List<User> list) {boolean result = redisTemplate.execute(new RedisCallback<Boolean>() {@Overridepublic Boolean doInRedis(RedisConnection connection)throws DataAccessException {RedisSerializer<String> redisSerializer = redisTemplate.getStringSerializer();for(User user : list){byte[] key = redisSerializer.serialize(user.getId().toString());byte[] name = redisSerializer.serialize(user.getUsername());connection.set(key, name);}return true;}},false, true);return result;}@Overridepublic void delete(String key) {redisTemplate.delete(key);}@Overridepublic void delete(List<String> keys) {redisTemplate.delete(keys);}@Overridepublic boolean update(final User user) {String userId = user.getId().toString();if(get(userId) == null){throw new NullPointerException("数据不存在"+userId);}boolean reuslt = redisTemplate.execute(new RedisCallback<Boolean>() {@Overridepublic Boolean doInRedis(RedisConnection connection)throws DataAccessException {RedisSerializer<String> serializer = redisTemplate.getStringSerializer();byte[] key = serializer.serialize(user.getId().toString());byte[] name = serializer.serialize(user.getUsername());connection.set(key, name);return true;}});return reuslt;}@Overridepublic User get(final String keyid) {User result = redisTemplate.execute(new RedisCallback<User>() {@Overridepublic User doInRedis(RedisConnection connection)throws DataAccessException {RedisSerializer<String> serializer = redisTemplate.getStringSerializer();byte[] key = serializer.serialize(keyid);byte[] value = connection.get(key);if(value == null){return null;}String name = serializer.deserialize(key);User user = new User();user.setId(Integer.parseInt(keyid));user.setUsername(name);return user;}});return result;}public void addUser(User user){ValueOperations<String, User> opsForValue = redisTemplate.opsForValue();opsForValue.set(user.getId().toString(), user);}}
也可通过一下方法实现
这些方法获取到个接口, 可以直接用命名模式操作redis服务器
public void addUser(User user){ValueOperations<String, User> opsForValue = redisTemplate.opsForValue();opsForValue.set(user.getId().toString(), user);}
测试
package com.my.ssm.dao.impl;import java.util.ArrayList;import java.util.List;import org.junit.Before;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.my.ssm.dao.UserDao;import com.my.ssm.po.User;public class UserDaoImplTest {ApplicationContext applicationContext = null;UserDao userDao = null;@Beforepublic void setUp() throws Exception {applicationContext = new ClassPathXmlApplicationContext("spring/applicationContext-redis.xml");userDao = (UserDao) applicationContext.getBean("userDao");}@Testpublic void testAddUser() {User user = new User();user.setId(1);user.setUsername("张三");userDao.add(user);}@Testpublic void testAddListOfUser() {List<User> users = new ArrayList<User>();User u1 = new User();u1.setId(2);u1.setUsername("zhangsan");User u2 = new User();u2.setId(3);u2.setUsername("lisi");User u3 = new User();u3.setId(4);u3.setUsername("wangwu");users.add(u1);users.add(u2);users.add(u3);userDao.add(users);}@Testpublic void testDeleteString() {userDao.delete("1");}@Testpublic void testDeleteListOfString() {List<String> keys = new ArrayList<String>();userDao.delete(keys);}@Testpublic void testUpdate() {User user = new User();user.setId(1);user.setUsername("aaaa");userDao.update(user);}@Testpublic void testGet() {User user = userDao.get("1");System.out.println(user);}@Testpublic void testAddUser1() {User user = new User();user.setId(22);user.setUsername("222");userDao.add(user);}}
阅读全文
0 0
- [Spring]Redis+Spring整合
- 深入浅出Redis-Spring整合Redis
- 深入浅出Redis-Spring整合Redis
- 深入浅出Redis-Spring整合Redis
- 深入浅出Redis-Spring整合Redis
- 深入浅出Redis-Spring整合Redis
- 深入浅出Redis-Spring整合Redis
- Redis-----5、Spring整合Redis
- spring redis整合
- Spring 整合 Redis
- spring redis整合(一)
- Spring 整合 Redis 分类:
- spring整合redis
- Spring 整合 Redis
- Spring 整合 Redis
- Redis整合Spring
- spring整合redis
- Spring 整合 Redis
- spring-security过程分析
- Web 研发模式演变
- 微型技术博客—javaswing的简单用法
- 2016百度-钓鱼比赛-Java
- 高考专业“新贵”:大数据、网络安全/智库2861
- Spring+redis整合
- Python 任意中文文本生成词云 最终版本
- linux下Samba服务器的配置
- collections
- ASP.NET MVC过滤器
- Spring启动后,立即执行需要的操作
- flex简单学习
- 跳石头
- Java NIO之非阻塞式
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
黑笔水弄到白帆布上怎么办
运动鞋太硬怎么办
板鞋臭怎么办快速去除
鞋胶弄到白鞋子上怎么办
真皮白鞋擦花了怎么办
白鞋被踩脏了怎么办
白鞋被踩了怎么办
白鞋踩脏了怎么办
白网鞋黑了怎么办
衣服偏小怎么办
胖子要穿正装怎么办呢
椰子鞋显脚大怎么办
老爹鞋显脚大怎么办
鞋子显脚大怎么办
帆布鞋显大怎么办
宝宝鞋子有尿味怎么办
aj鞋买大了怎么办
白鞋沾上辣椒油怎么办
白鞋弄上油了怎么办
白鞋滴上辣椒油怎么办
黑色凉鞋褪色怎么办
爱上咖啡怎么办
脚背高磨脚怎么办
拖鞋脚背会磨脚怎么办
同事长请喝咖啡怎么办
穿乐福鞋掉跟怎么办
鞋子宽度不够怎么办
穿夹脚拖鞋脚痛怎么办
神经发炎怎么办
手神经发炎怎么办
滑溜冰鞋轮很斜怎么办
gucci小白鞋磨脚怎么办
溜冰鞋下坡怎么办
白鞋洗了发黄怎么办
鞋子老掉怎么办
没脚后跟穿鞋掉怎么办
鞋子不跟脚怎么办
鞋跟掉皮怎么办
布鞋掉鞋怎么办
布鞋掉跟怎么办
白帆布鞋发黄怎么办