Spring Data Redis
来源:互联网 发布:淘宝从零做到年销千万 编辑:程序博客网 时间:2024/05/06 13:55
1.安装
apt-get install redis-server
安装完成后会自动启动(默认监听6379端口)
修改配置
vi /etc/redis/redis.conf#取消注释requirepassrequirepass 你的密码#注释bind(ip绑定)#bind 127.0.0.1
redis的restart start stop status
/etc/init.d/redis-server restart
2.数据操作RedisTemplate
@Autowired private RedisTemplate<String, String> redisTemplate; @Override public Long del(final String... keys) { return redisTemplate.execute(new RedisCallback<Long>() { public Long doInRedis(RedisConnection connection) throws DataAccessException { long result = 0; for (int i = 0; i < keys.length; i++) { result = connection.del(keys[i].getBytes()); } return result; } }); } @Override public void set(final byte[] key, final byte[] value, final long liveTime) { redisTemplate.execute(new RedisCallback<Long>() { public Long doInRedis(RedisConnection connection) throws DataAccessException { connection.set(key, value); if (liveTime > 0) { connection.expire(key, liveTime); } return 1L; } }); } @Override public void set(String key, String value, long liveTime) { this.set(key.getBytes(), value.getBytes(), liveTime); } @Override public void set(String key, String value) { this.set(key, value, 0L); } @Override public void setObject(String key, Object value) { this.set(key.getBytes(), CommonUtils.serialize(value), 0L); } @Override public void setObject(String key, Object value, long liveTime) { this.set(key.getBytes(), CommonUtils.serialize(value), liveTime); } @Override public void set(byte[] key, byte[] value) { this.set(key, value, 0L); } @Override public <T> T getObject(final String key,Class<T> clazz) { return CommonUtils.deserialize(this.get(key.getBytes()),clazz); } @Override public String get(final String key) { return redisTemplate.execute(new RedisCallback<String>() { public String doInRedis(RedisConnection connection) throws DataAccessException { try { byte[] b = connection.get(key.getBytes()); if(b != null && b.length > 0){ return new String(connection.get(key.getBytes()), Constant.UTF_8); } } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return ""; } }); } @Override public byte[] get(final byte[] key) { return redisTemplate.execute(new RedisCallback<byte[]>() { public byte[] doInRedis(RedisConnection connection) throws DataAccessException { try { return connection.get(key); } catch (Exception e) { e.printStackTrace(); } return null; } }); } @Override public Set<String> getkeys(String pattern) { return redisTemplate.keys(pattern); } @Override public boolean exists(final String key) { return redisTemplate.execute(new RedisCallback<Boolean>() { public Boolean doInRedis(RedisConnection connection) throws DataAccessException { return connection.exists(key.getBytes()); } }); } @Override public String flushDB() { return redisTemplate.execute(new RedisCallback<String>() { public String doInRedis(RedisConnection connection) throws DataAccessException { connection.flushDb(); return "ok"; } }); } @Override public Long dbSize() { return redisTemplate.execute(new RedisCallback<Long>() { public Long doInRedis(RedisConnection connection) throws DataAccessException { return connection.dbSize(); } }); } @Override public String ping() { return redisTemplate.execute(new RedisCallback<String>() { public String doInRedis(RedisConnection connection) throws DataAccessException { return connection.ping(); } }); } @Override public List<Object> findByPage(final String key,Integer page,Integer pageSize){ return redisTemplate.execute(new RedisCallback<List<Object>>() { public List<Object> doInRedis(RedisConnection connection) throws DataAccessException { List<Object> results = new ArrayList<>(); Integer begin = (page - 1) * pageSize; Integer end = pageSize + begin - 1; Set<byte[]> s = connection.zRange(key.getBytes(), begin, end);//zRange 小→大 取值 zRevRange 大→小 取值 for (Iterator<byte[]> iter = s.iterator(); iter.hasNext();) { Object obj = CommonUtils.deserialize(iter.next(), Object.class); if(obj != null) results.add(obj); } return results; } }); } @Override public void setPageData(final String key,final Object data){ redisTemplate.execute(new RedisCallback<Long>() { @SuppressWarnings("rawtypes") public Long doInRedis(RedisConnection connection) throws DataAccessException { if(data != null && data instanceof List){ List $data = (List) data; if(data != null && !$data.isEmpty()){ Integer size = $data.size(); for(int i=0;i<size;i++){ Object obj = $data.get(i); connection.zAdd(key.getBytes(), i, CommonUtils.serialize(obj)); } return 1L; } } return -1L; } }); }
3.Redis作为默认的缓存管理器
spring.cache.type=redisspring.redis.host=www.wuxiaozeng.cnspring.redis.password=123456
设置cache管理器类型为redis,则Spring Boot会默认注册RedisCacheManager @EnableCaching 开启缓存注解
在方法执行之前先查看是否有缓存,有则返回,无则查询并将返回值放入缓存(map集合#params[‘articleId’])
@Cacheable(value=”test”,key=”#u.id”)
无论何时都将返回值放入缓存
@CachePut(value=”test”,key=”#u.id”)
删除缓存
@CacheEvict(value=”test”)
可以组合使用上述三种注解
@Caching
@CachePut(value="test",key="#u.id") public User add(User u){ System.err.println("缓存了-----"+u.getId()+"===的数据"+u.getName()); return u; } @CachePut(value="test",key="#params['key']") public User add(Map<String,String> params){ System.err.println("缓存了-----"+u.getId()+"===的数据"+u.getName()); return u; } @Cacheable(value="test",key="#u.id")//如果之前不存在此key。。则异常 public User find(User u){ return new User("ccgx","2"); } @CacheEvict(value="test",key="#u.id") public void del(String id){ System.err.println("del-----"+id); }
当add之后,使用相同的id进行find,得到的依旧是旧的User,而不是新的ccgx的User,如果del之后,再次find,则返回ccgx的User
0 0
- redis:spring-data-redis
- redis Jredis spring-data-redis
- spring data redis 操作redis
- Spring Data Redis (Redis Support)
- Spring Data Redis(Redis Transactions)
- Spring Data Redis(Redis Scripting)
- Spring Data Redis(Redis Cluster)
- Spring Data Redis(Redis Repositories)
- spring data redis 操作redis
- SPRING DATA - REDIS配置
- spring data redis试用
- SPRING DATA - REDIS配置
- SPRING DATA - REDIS配置
- Spring-Data-Redis特性
- Spring Data Redis
- spring-data-redis 使用
- spring-data集成redis
- spring-data-redis 使用
- 在csdn上面留下自己的足迹
- 输入10个整数存入一维数组,再按逆序重新存放后再输出。
- Java -- 程序中代码初始化顺序
- mac安装微擎后台
- 2016——个人年度总结
- Spring Data Redis
- RANSAC 算法学习与测试
- CentOS中命令别名的使用
- apache-tomcat安装及配置图片教程
- maven自动部署到远程tomcat步骤和常见错误
- [Windows]_[中级]_[崩溃报告的中级解决方案]
- Java 重载、重写、构造函数详解
- SSH+JFreeChart,开启tomcat报异常,求大神赐教!
- UML学习——协作图