----------------------------------------------------------------------------------------------------------------
springboot 详解 (一) helloworld 下载demo
springboot 详解 (四)redis & filter 下载demo
springboot 详解 (五)interceptor 下载demo
springboot 详解 (六)servlet & scheduled & listener 下载demo
springboot 详解(七) dubbox & zookeeper 下载(productor) 下载(constumser)
springboot 详解(八) springboot & springcloud
----------------------------------------------------------------------------------------------------------------
package com.curiousby.cn.redis; import java.util.List; public interface IRedisService { public boolean set(String key, String value); public boolean set(String key, String value,long expire); public String get(String key); public boolean expire(String key,long expire); public <T> boolean setList(String key ,List<T> list); public <T> List<T> getList(String key,Class<T> clz); public long lpush(String key,Object obj); public long rpush(String key,Object obj); public String lpop(String key); }
package com.curiousby.cn.redis; import org.apache.log4j.Logger; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.jedis.JedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.StringRedisTemplate; import redis.clients.jedis.JedisPoolConfig; /** * * @author vic * @desc redis config bean * */ @Configuration @EnableAutoConfiguration public class RedisConfig { private static Logger logger = Logger.getLogger(RedisConfig.class); @Bean @ConfigurationProperties(prefix="spring.redis") public JedisPoolConfig getRedisConfig(){ JedisPoolConfig config = new JedisPoolConfig(); return config; } @Bean @ConfigurationProperties(prefix="spring.redis") public JedisConnectionFactory getConnectionFactory(){ JedisConnectionFactory factory = new JedisConnectionFactory(); JedisPoolConfig config = getRedisConfig(); factory.setPoolConfig(config); logger.info("JedisConnectionFactory bean init success."); return factory; } @Bean public RedisTemplate<?, ?> getRedisTemplate(){ RedisTemplate<?,?> template = new StringRedisTemplate(getConnectionFactory()); return template; } }
package com.curiousby.cn.redis; import java.util.List; import java.util.concurrent.TimeUnit; 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.data.redis.serializer.RedisSerializer; import org.springframework.stereotype.Service; import com.curiousby.cn.util.JSONUtil; /** * * @author * @desc resdis service * */ @Service(value="redisService") public class RedisServiceImpl implements IRedisService{ @Autowired private RedisTemplate<String, String> redisTemplate; @Override public boolean set(final String key, final String value) { boolean result = redisTemplate.execute(new RedisCallback<Boolean>() { @Override public Boolean doInRedis(RedisConnection connection) throws DataAccessException { RedisSerializer<String> serializer = redisTemplate.getStringSerializer(); connection.set(serializer.serialize(key), serializer.serialize(value)); return true; } }); return result; } @Override public boolean set(final String key, final String value,final long expire) { boolean result = redisTemplate.execute(new RedisCallback<Boolean>() { @Override public Boolean doInRedis(RedisConnection connection) throws DataAccessException { RedisSerializer<String> serializer = redisTemplate.getStringSerializer(); connection.set(serializer.serialize(key), serializer.serialize(value)); redisTemplate.expire(key, expire, TimeUnit.SECONDS); return true; } }); return result; } public String get(final String key){ String result = redisTemplate.execute(new RedisCallback<String>() { @Override public String doInRedis(RedisConnection connection) throws DataAccessException { RedisSerializer<String> serializer = redisTemplate.getStringSerializer(); byte[] value = connection.get(serializer.serialize(key)); return serializer.deserialize(value); } }); return result; } @Override public boolean expire(final String key, long expire) { return redisTemplate.expire(key, expire, TimeUnit.SECONDS); } @Override public <T> boolean setList(String key, List<T> list) { String value = JSONUtil.toJson(list); return set(key,value); } @Override public <T> List<T> getList(String key,Class<T> clz) { String json = get(key); if(json!=null){ List<T> list = JSONUtil.toList(json, clz); return list; } return null; } @Override public long lpush(final String key, Object obj) { final String value = JSONUtil.toJson(obj); long result = redisTemplate.execute(new RedisCallback<Long>() { @Override public Long doInRedis(RedisConnection connection) throws DataAccessException { RedisSerializer<String> serializer = redisTemplate.getStringSerializer(); long count = connection.lPush(serializer.serialize(key), serializer.serialize(value)); return count; } }); return result; } @Override public long rpush(final String key, Object obj) { final String value = JSONUtil.toJson(obj); long result = redisTemplate.execute(new RedisCallback<Long>() { @Override public Long doInRedis(RedisConnection connection) throws DataAccessException { RedisSerializer<String> serializer = redisTemplate.getStringSerializer(); long count = connection.rPush(serializer.serialize(key), serializer.serialize(value)); return count; } }); return result; } @Override public String lpop(final String key) { String result = redisTemplate.execute(new RedisCallback<String>() { @Override public String doInRedis(RedisConnection connection) throws DataAccessException { RedisSerializer<String> serializer = redisTemplate.getStringSerializer(); byte[] res = connection.lPop(serializer.serialize(key)); return serializer.deserialize(res); } }); return result; } }
spring.redis.database=0 spring.redis.host=localhost spring.redis.port=6379 spring.redis.password= spring.redis.pool.max-active=8 spring.redis.pool.max-wait=-1 spring.redis.pool.max-idle=8 spring.redis.pool.min-idle=0 spring.redis.timeout=0
package com.curiousby.cn.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.annotation.WebFilter; import javax.servlet.http.HttpServletRequest; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; import com.curiousby.cn.redis.IRedisService; @WebFilter(filterName="ipFilter",urlPatterns="/*") public class IPFilter implements Filter { protected static final Logger logger = LoggerFactory.getLogger(IPFilter.class); public final static int IPMAXCOUNTPERMINUTES = 5; public final static long IPLIMITSENCONDS = 300; public final static long IPCOUNTSENCONDS = 60; // @Resource IRedisService iredisService; @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest) request; WebApplicationContext wac=WebApplicationContextUtils.getWebApplicationContext(req.getSession().getServletContext()); iredisService = (IRedisService) wac.getBean("redisService"); String ip = getIpAddr(req); String ipLimit = iredisService.get(ip+"_limit"); if (ipLimit !=null && !"".equals(ipLimit)) { req.getRequestDispatcher("/web/static/forward").forward(req, response); return; }else{ String ipConut = iredisService.get(ip+"_count"); if (ipConut !=null && !"".equals(ipConut)){ int ipLCount = Integer.parseInt(ipConut); if(ipLCount >= IPMAXCOUNTPERMINUTES){ iredisService.set(ip+"_limit", ipLCount+"", IPLIMITSENCONDS); iredisService.set(ip+"_count", "0", IPCOUNTSENCONDS); req.getRequestDispatcher("/web/static/forward").forward(req, response); return; }else{ ipLCount += 1; iredisService.set(ip+"_count", ipLCount+"", IPCOUNTSENCONDS); } }else{ iredisService.set(ip+"_count", "1", IPCOUNTSENCONDS); } } chain.doFilter(req, response); } @Override public void destroy() { } public String getIpAddr(HttpServletRequest request) { String ip = request.getHeader("x-forwarded-for"); if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("Proxy-Client-IP"); } if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("WL-Proxy-Client-IP"); } if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getRemoteAddr(); } return ip; } }
package com.curiousby.cn.util; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import com.google.gson.Gson; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import com.google.gson.reflect.TypeToken; /** * * @author vic * @desc json util */ public class JSONUtil { private static Gson gson = null; static{ gson = new Gson();//todo yyyy-MM-dd HH:mm:ss } public static synchronized Gson newInstance(){ if(gson == null){ gson = new Gson(); } return gson; } public static String toJson(Object obj){ return gson.toJson(obj); } public static <T> T toBean(String json,Class<T> clz){ return gson.fromJson(json, clz); } public static <T> Map<String, T> toMap(String json,Class<T> clz){ Map<String, JsonObject> map = gson.fromJson(json, new TypeToken<Map<String,JsonObject>>(){}.getType()); Map<String, T> result = new HashMap<>(); for(String key:map.keySet()){ result.put(key,gson.fromJson(map.get(key),clz) ); } return result; } public static Map<String, Object> toMap(String json){ Map<String, Object> map = gson.fromJson(json, new TypeToken<Map<String,Object>>(){}.getType()); return map; } public static <T> List<T> toList(String json,Class<T> clz){ JsonArray array = new JsonParser().parse(json).getAsJsonArray(); List<T> list = new ArrayList<>(); for(final JsonElement elem : array){ list.add(gson.fromJson(elem, clz)); } return list; } public static void main(String[] args) { } }
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-redis</artifactId> </dependency> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> </dependency>
相关推荐
基于springboot+mybatis redis构建的在线抽奖系统 基于springboot+mybatis redis构建的在线抽奖系统 基于springboot+mybatis redis构建的在线抽奖系统 基于springboot+mybatis redis构建的在线抽奖系统 基于...
基于springboot+mybatis redis构建的在线抽奖系统,管理后台,采用队列处理,支持高并发 项目经过严格测试,确保可以运行! 基于springboot+mybatis redis构建的在线抽奖系统,管理后台,采用队列处理,支持高并发...
1、基于springboot+mybatis redis构建的在线抽奖系统源码.zip 2、该资源包括项目的全部源码,下载可以直接使用! 3、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料...
springboot整合redis.算是比较全面的一种整合方式了. springboot整合redis.算是比较全面的一种整合方式了.
文章是redisUtils工具类的封装,和基于springboot环境的单元测试; 文中封装了redis的众多方法,希望对您有所帮助。
包含springBoot对redis操作的方法,包括测试,测试在test包里
抽奖系统后台 springboot+mybatis redis队列处理高并发
springboot整合redis动态切换每个数据库,
springBoot2.0+redis3.2.1实例demo:包含redis3.2.1(windows 64位),springBoot2.0集成redis。代码完成了从redis中读取和存入数据.
springboot集成redis集群,redis安装包配置,参考文章:https://blog.csdn.net/zhizhuodewo6/article/details/82316164
springboot整合redis集群(三种方式)源码
Java开发基于SpringBoot+WebSocket+Redis分布式即时通讯群聊系统。一个基于Spring Boot + WebSocket + Redis,可快速开发的分布式即时通讯群聊系统。适用于直播间聊天、游戏内聊天、客服聊天等临时性群聊场景。 ...
SpringBoot课程-Redis.pdf
springboot +shiro+redis实现session共享(方案二)1
springboot2.0.3 的redis共享session的demo,可以学习一下session共享
项目采用SpringBoot框架,整合了SSM框架及Redis缓存,前端页面采用的是thymeleaf,运行时,必须先启动Redis缓存数据库。
Springboot整合Redis集群,零配置方式;另外用AOP实现了操作缓存的三套自定义注解,有兴趣的小伙伴可以试试看.
springBoot+mybatis+redis集成,不上代码要确保redis服务端已经运行
springBoot集成Redis源码,springBoot集成Redis源码,springBoot集成Redis源码