springmvc整合redis(补充一)
来源:互联网 发布:c语言射击游戏 编辑:程序博客网 时间:2024/06/07 00:59
上一篇:http://blog.csdn.net/h996666/article/details/78124232
上一篇接口写的不太完整,只进行了简单的操作。
这篇补充对对象,JSON,List的添加。以及删除操作。
贴代码:
接口RedisService.java
public interface RedisService {/** * 添加 * * @param key * @param value */void put(String key, Object value);/** * 添加 * * @param key * @param value * @param expiredTime 过期时间 */void put(String key, Object value, Long expiredTime);/** * 获取 * * @param key * @return */Object get(String key);/** * 删除 * * @param key */void delete(String key);}接口实现RedisServiceImpl.java
import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import org.apache.commons.lang3.StringUtils;import org.springframework.beans.factory.annotation.Autowired;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.stereotype.Service;import com.service.redis.RedisService;@Servicepublic class RedisServiceImpl implements RedisService {@Autowiredprivate RedisTemplate<String, String> redisTemplate;/** * 添加 */@Overridepublic void put(String key, Object value) {put(key, value, null);}/** * 添加 */@Overridepublic void put(String key, Object value, Long expiredTime) {if(StringUtils.isBlank(key)) {return;}if (null == value) {return;}redisTemplate.execute(new RedisCallback<Long>() {@Overridepublic Long doInRedis(RedisConnection conn) throws DataAccessException {byte[] keyb = key.getBytes();byte[] valueb = toByteArray(value);conn.set(keyb, valueb);if (null != expiredTime) {conn.expire(keyb, expiredTime);}return 1l;}});}/** * 获取 */@Overridepublic Object get(String key) {Object value;value = redisTemplate.execute(new RedisCallback<Object>() {@Overridepublic Object doInRedis(RedisConnection conn) throws DataAccessException {byte[] keyb = key.getBytes();byte[] valueb = conn.get(keyb);return toObject(valueb);}});return value;}/** * 删除 */@Overridepublic void delete(String key) {redisTemplate.execute(new RedisCallback<Long>() {@Overridepublic Long doInRedis(RedisConnection conn) throws DataAccessException {byte[] keyb = key.getBytes();conn.del(keyb);return 1l;}});}/** * 将byte[] 转成 Object * * @param bytes * @return */private Object toObject(byte[] bytes) {Object obj = null;ByteArrayInputStream bais = null;ObjectInputStream ois = null;try {bais = new ByteArrayInputStream(bytes);ois = new ObjectInputStream(bais);obj = ois.readObject();} catch(IOException e) {e.printStackTrace();} catch (ClassNotFoundException e) {e.printStackTrace();} finally {try {ois.close();bais.close();} catch (IOException e) {e.printStackTrace();}}return obj;}/** * object 转成 byte[] * @param obj * @return */private byte[] toByteArray(Object obj) {byte[] bytes = null;ByteArrayOutputStream baos = null;ObjectOutputStream oos = null;try {baos = new ByteArrayOutputStream();oos = new ObjectOutputStream(baos);oos.writeObject(obj);oos.flush();bytes = baos.toByteArray();} catch (IOException e) {e.printStackTrace();} finally {try {oos.close();baos.close();} catch (IOException e) {e.printStackTrace();}}return bytes;}}JUNIT测试类:
import java.util.ArrayList;import java.util.List;import org.junit.Test;import org.springframework.beans.factory.annotation.Autowired;import com.alibaba.fastjson.JSONObject;import com.model.user.User;import com.service.redis.RedisService;import test.service.BaseTest;public class RedisServiceTest extends BaseTest {@Autowiredprivate RedisService redisService;/** * 添加对象(该对象需要实现Serializable接口) */@Testpublic void testPut_1() {User user = new User();user.setId(1001);user.setName("huang");redisService.put("user1", user);}/** * 添加JSON对象 */@Testpublic void testPut_2() {JSONObject user = new JSONObject();user.put("id", "1002");user.put("name", "zhang");redisService.put("user1", user);}/** * 添加数组 */@Testpublic void testPut_3() {List<User> userList = new ArrayList<User>();User user1 = new User();user1.setId(1001);user1.setName("huang");User user2 = new User();user2.setId(1002);user2.setName("zhang");User user3 = new User();user3.setId(1003);user3.setName("li");userList.add(user1);userList.add(user2);userList.add(user3);redisService.put("userList", userList);}/** * 获取 */@Testpublic void testGet() {System.out.println(redisService.get("userList"));}/** * 删除 */@Testpublic void testDelete() {redisService.delete("name");redisService.delete("age");redisService.delete("shuzi");}}
阅读全文
0 0
- springmvc整合redis(补充一)
- springmvc整合redis
- SpringMVC 整合Redis
- springmvc整合redis
- SpringMVC+Redis整合
- SpringMVC+redis整合
- springmvc整合redis
- SpringMVC+redis整合
- SpringMvc整合redis
- SpringMVC整合Redis实例
- Springmvc + Redis 整合
- springmvc整合redis
- SpringMVC+redis整合
- SpringMvc 4.3 整合redis
- springmvc整合redis架构搭建
- springMVC整合jedis+redis注解
- 5. SpringMVC+redis整合-上篇
- 5. SpringMVC+redis整合-下篇
- Rx 入门指引
- 运算符
- mysql查询今天、昨天、7天、近30天、本月、上一月 数据
- Cmake Practice(一)
- 用C#实现字符串相似度算法(编辑距离算法 Levenshtein Distance)
- springmvc整合redis(补充一)
- SQL server 第三篇 多表联接查询
- Invalidate(TRUE)与Invalidate(FALSE)区别
- 运行amanda时报amandad: symbol lookup error: /lib/libamanda-2.6.1p2.so: undefined symbol: g_slist_free_fu
- python用read_csv导入txt文件时的数据丢失问题
- 嵌入式数据库sqlite3移植
- 微信开发相关
- js简单数组去重
- Java——多生产者 多消费者