redis springMVC 配置与应用

1、创建一个ConstantUtil类

/**
* redis配置文件名
*/
public final static String REDIS_FILE_NAME_CONFIG = "redis.properties";

2、pom文件中填加

<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>

3、配置一个redis配置文件

#redis服务器IP
redis.addr=10.12.12.140

#redis的端口号
redis.port=6379

#可用连接实例的最大数目,默认为8 如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)。
redis.maxActive=1024

#控制一个pool最多有多少个状态为idle(空闲)的jedis实例,默认也是8
redis.maxIdle=200

#等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时。如果超过等待时间,则直接抛出JedisConnectionException
redis.maxWait=10000

#初始化连接池超时时间
redis.timeOut=10000

4、编写RedisUtil工具类

package com.aspire.prnp.redis;

import java.util.List;
import java.util.Map;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.aspire.prnp.util.StringUtil;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

public class RedisUtil {
private static final Logger logger = LoggerFactory.getLogger(RedisUtil.class);
//访问密码
// private static String AUTH = "root";

//在borrow一个redis实例时,是否提前进行validate操作;
//如果为true,则得到的jedis实例均是可用的
private static boolean TEST_ON_BORROW = true;

private static JedisPool jedisPool = null;

/**
*
* method_name:setRedisParamters
* date:2017年6月15日下午5:23:27
* return_type:void
* description:初始化Redis连接池
*/
public static void setRedisParamters(String addr,int port,int timeOut,int maxActive,int maxIdle,int maxWait){
try {
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(maxActive);//老版本是setMaxActive
config.setMaxIdle(maxIdle);
config.setMaxWaitMillis(maxWait);//老版本是maxMaxWait
config.setTestOnBorrow(TEST_ON_BORROW);
jedisPool = new JedisPool(config,addr,port,timeOut);//有密码的时候传入AUTH
} catch (Exception e) {
e.printStackTrace();
}

}

/**
*
* method_name:getJedis
* date:2017年6月15日下午5:41:24
* return_type:Jedis
* description:获取Jedis实例
*/
public synchronized static Jedis getJedis(){
try {
if(jedisPool != null){
Jedis resource = jedisPool.getResource();
return resource;
}else{
return null;
}
} catch (Exception e) {
e.printStackTrace();
return null;
}
}

/**
*
* method_name:returnResource
* date:2017年6月15日下午5:41:36
* return_type:void
* description:释放jedis资源
*/
public static void returnResource(Jedis jedis){
if(jedis != null){
jedis.close();
}
}
/**
*
* method_name:setString
* date:2017年6月22日下午3:20:01
* return_type:void
* description:设置String
*/
public static void setString(String key ,String value){
try {
value = StringUtil.isEmpty(value) ? "" : value;
getJedis().set(key,value);
} catch (Exception e) {
logger.error("Set key error : "+e);
}
}
/**
*
* method_name:setString
* date:2017年6月22日下午3:20:50
* return_type:void
* description:设置String及过期时间
*/
public static void setString(String key ,int seconds,String value){
try {
value = StringUtil.isEmpty(value) ? "" : value;
getJedis().setex(key, seconds, value);
} catch (Exception e) {
logger.error("Set keyex error : "+e);
}
}
/**
*
* method_name:getString
* date:2017年6月22日下午3:24:32
* return_type:String
* description:
*/
public static String getString(String key){
if(getJedis() == null || !getJedis().exists(key)){
return null;
}
return getJedis().get(key);
}

public static <T> void setList(String key ,List<T> list){
try {
getJedis().set(key.getBytes(),ObjectTranscoder.serialize(list));
} catch (Exception e) {
logger.error("Set key error : "+e);
}
}

public static <T> List<T> getList(String key){
if(getJedis() == null || !getJedis().exists(key.getBytes())){
return null;
}
byte[] in = getJedis().get(key.getBytes());
List<T> list = (List<T>) ObjectTranscoder.deserialize(in);
return list;
}

public static <T> void setMap(String key ,Map<String,T> map){
try {
getJedis().set(key.getBytes(),ObjectTranscoder.serialize(map));
} catch (Exception e) {
logger.error("Set key error : "+e);
}
}

public static <T> Map<String,T> getMap(String key){
if(getJedis() == null || !getJedis().exists(key.getBytes())){
return null;
}
byte[] in = getJedis().get(key.getBytes());
Map<String,T> map = (Map<String, T>) ObjectTranscoder.deserialize(in);
return map;
}
}

5、应用实例

/**
*
* method_name:queryTrafficCount
* date:2017年6月19日下午4:46:00
* return_type:Map<String,Object>
* description:查询首页业务量及用户数图表
*/
@RequestMapping(value = "/report/queryTrafficCount.ajax")
@ResponseBody
public Map<String,Object> queryTrafficCount(String type){
long starTime = System.currentTimeMillis();
try{
Configuration c =ConfigurationHelper.getConfiguration(ConstantUtil.REDIS_FILE_NAME_CONFIG);
String addr = c.getString("redis.addr");
int port = c.getInt("redis.port");
int timeOut = c.getInt("redis.timeOut");
int maxActive = c.getInt("redis.maxActive");
int maxIdle = c.getInt("redis.maxIdle");
int maxWait = c.getInt("redis.maxWait");
RedisUtil.setRedisParamters(addr, port, timeOut, maxActive, maxIdle, maxWait);
Map<String, Object> data = null;
if("d".equals(type)){
data = RedisUtil.getMap("trafficCountForDay");
}else if("m".equals(type)){
data = RedisUtil.getMap("trafficCountForMonth");
}else if("y".equals(type)){
data = RedisUtil.getMap("trafficCountForYear");
}
if(data == null){
data = homePageReportService.getChart(type);
if("d".equals(type)){
RedisUtil.setMap("trafficCountForDay", data);
}else if("m".equals(type)){
RedisUtil.setMap("trafficCountForMonth", data);
}else if("y".equals(type)){
RedisUtil.setMap("trafficCountForYear", data);
}
}

long endTime = System.currentTimeMillis();
logger.info("查询首页业务量及用户数controller耗时"+(endTime-starTime));
return data;
}catch(Exception e){
logger.error("查询首页业务量及用户数", e);
return super.fail("查询首页业务量及用户数");
}
}
/**
*
* method_name:queryTrafficAreaFormCount
* date:2017年6月22日上午11:13:19
* return_type:Map<String,Object>
* description:查询业务量区域数据
*/
@RequestMapping(value = "/report/queryTrafficAreaFormCount.ajax")
@ResponseBody
public Map<String,Object> queryTrafficAreaFormCount(String type){
long starTime = System.currentTimeMillis();
PageVo pageData = null;
try{
Configuration c =ConfigurationHelper.getConfiguration(ConstantUtil.REDIS_FILE_NAME_CONFIG);
String addr = c.getString("redis.addr");
int port = c.getInt("redis.port");
int timeOut = c.getInt("redis.timeOut");
int maxActive = c.getInt("redis.maxActive");
int maxIdle = c.getInt("redis.maxIdle");
int maxWait = c.getInt("redis.maxWait");
RedisUtil.setRedisParamters(addr, port, timeOut, maxActive, maxIdle, maxWait);
Map<String, Object> data = null;
if("d".equals(type)){
data = RedisUtil.getMap("trafficAreaFormCountForDay");
}else if("m".equals(type)){
data = RedisUtil.getMap("trafficAreaFormCountForMonth");
}else if("y".equals(type)){
data = RedisUtil.getMap("trafficAreaFormCountForYear");
}

if(data == null){
data = homePageReportService.getAreaFormChart(type);
if("d".equals(type)){
RedisUtil.setMap("trafficAreaFormCountForDay", data);
}else if("m".equals(type)){
RedisUtil.setMap("trafficAreaFormCountForMonth", data);
}else if("y".equals(type)){
RedisUtil.setMap("trafficAreaFormCountForYear", data);
}
}
pageData = new PageVo(1, 200, 0).format();
pageData.setList((List<Map<String,Object>>)data.get("deliveryAreaData"));
pageData.setTotal(0);
long endTime = System.currentTimeMillis();
logger.info("查询首页业务量及用户数controller耗时"+(endTime-starTime));
return pageData.pageModel();
}catch(Exception e){
logger.error("查询首页业务量及用户数", e);
return super.fail("查询首页业务量及用户数");
}
}
/**
*
* method_name:queryTrafficAreaFormCount
* date:2017年6月22日上午11:13:19
* return_type:Map<String,Object>
* description:查询业务量企业数据
*/
@RequestMapping(value = "/report/queryTrafficExpFormCount.ajax")
@ResponseBody
public Map<String,Object> queryTrafficExpFormCount(String type){
long starTime = System.currentTimeMillis();
PageVo pageData = null;
try{
Configuration c =ConfigurationHelper.getConfiguration(ConstantUtil.REDIS_FILE_NAME_CONFIG);
String addr = c.getString("redis.addr");
int port = c.getInt("redis.port");
int timeOut = c.getInt("redis.timeOut");
int maxActive = c.getInt("redis.maxActive");
int maxIdle = c.getInt("redis.maxIdle");
int maxWait = c.getInt("redis.maxWait");
RedisUtil.setRedisParamters(addr, port, timeOut, maxActive, maxIdle, maxWait);
Map<String, Object> data = null;
if("d".equals(type)){
data = RedisUtil.getMap("trafficExpFormCountForDay");
}else if("m".equals(type)){
data = RedisUtil.getMap("trafficExpFormCountForMonth");
}else if("y".equals(type)){
data = RedisUtil.getMap("trafficExpFormCountForYear");
}
if(data == null){
data = homePageReportService.getExpFormChart(type);
if("d".equals(type)){
RedisUtil.setMap("trafficExpFormCountForDay", data);
}else if("m".equals(type)){
RedisUtil.setMap("trafficExpFormCountForMonth", data);
}else if("y".equals(type)){
RedisUtil.setMap("trafficExpFormCountForYear", data);
}
}
pageData = new PageVo(1, 200, 0).format();
pageData.setList((List<Map<String,Object>>)data.get("deliveryExpData"));
pageData.setTotal(0);
long endTime = System.currentTimeMillis();
logger.info("查询首页业务量及用户数controller耗时"+(endTime-starTime));
return pageData.pageModel();
}catch(Exception e){
logger.error("查询首页业务量及用户数", e);
return super.fail("查询首页业务量及用户数");
}
}

ps service业务层代码省略

时间: 2024-10-20 10:13:11

redis springMVC 配置与应用的相关文章

nginx+lua+redis(openresty)配置

nginx+lua+redis(openresty)配置 2014-07-18 11:10 2494人阅读 评论(1) 收藏 举报 方案一: 1.安装lua解释器 wget http://luajit.org/download/LuaJIT-2.0.2.tar.gz (http://luajit.org/download.html) 配置lua Lib和include/luajit-$version目录为环境变量 2.下载ngx_devel_kit和lua-nginx-module https:

Linux下Redis服务器安装配置

说明:操作系统:CentOS1.安装编译工具yum install wget  make gcc gcc-c++ zlib-devel openssl openssl-devel pcre-devel kernel keyutils  patch perl 2.安装tcl组件包(安装Redis需要tcl支持)cd /usr/local/src #进入软件包存放目录wget  http://downloads.sourceforge.net/tcl/tcl8.6.6-src.tar.gztar 

SpringMVC配置实例

一.SpringMVC概述 MVCII模式实现的框架技术 Model--业务模型(Biz,Dao...) View--jsp及相关的jquery框架技术(easyui) Contraller--DispatcherServlet以及控制器组件 二.控制器组件 1).DispatherServlet 2).xxx-servlet.xml文件 3).转向模型ModelAndView类 4).相应的Aop组件和拦截器组件 三.springMvc的开发步骤 1.在当前工程引入spring组件包 2.编写

redis安装配置和使用;tomcat安装和使用

virtualbox主要有下面几种方式(不同版本称法不一样,但实质是一样的): 1.Intelnal Network:利用主机上的所有的虚拟机构建一个虚拟网络 2.NAT:能访问互联网,不能访问主机(或局域网)//通过这个下gcc 3.Host Interface:能访问主机(或局域网),不能访问互联网 修改过后 netstat restart 先确保Linux已安装gcc zmalloc.h:50:31: error: jemalloc/jemalloc.h: No such file or

Redis主从配置

前言 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API. redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sortedset --有序集合)和hash(哈希类型).这些数据类型都支持push/pop.add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的.在

Redis 主从配置和参数详解

安装redis 下载redis wget http://download.redis.io/releases/redis-3.0.7.tar.gz 解压redis tar -xvf redis-3.0.7.tar.gz 安装redis cd redis-3.0.7 “有可能需要安装gcc插件:yum install -y gcc ” make “如果make有报错,则执行,没有报错就不需要 make MALLOC=libc ” redis.conf相关参数 1. Redis默认不是以守护进程的方

CentOS下Redis服务器安装配置

http://www.centoscn.com/image-text/config/2014/0712/3285.html 1.安装编译工具 yum install wget  make gcc gcc-c++ zlib-devel openssl openssl-devel pcre-devel kernel keyutils  patch perl 2.安装tcl组件包(安装Redis需要tcl支持) 下载:http://downloads.sourceforge.net/tcl/tcl8.

Redis——学习之路三(初识redis config配置)

我们先看看config 默认情况下系统是怎么配置的.在命令行中输入 config get *(如图) 默认情况下有61配置信息,每一个命令占两行,第一行为配置名称信息,第二行为配置的具体信息. 我们就从上到下来理解一下这些配置信息中的某些配置: 1.dbfilename是本地持久化存储数据库文件名,默认为dump.rdb.我可以在安装目录文件夹下找到这个文件. 2.requirepass是密码,即连接服务器的密码,默认为空.下面我来设置一个密码然后用带密码的命令连接一遍. 3.msterauth

高性能网站架构设计之缓存篇(3)- Redis的配置

我们说Redis是一个强大的Key-Value存储系统,在前面我们已遇到了两个问题: 1.redis server 启动后,独占进程,能不能修改为后台服务呢? 2.redis server 服务是单线程的,而我的机器是多核的,能不能在同一台机器上开启多个实例更充分的利用 cpu 资源呢?但6379端口已经被前一个实例绑定,肯定会有冲突,那能不能修改默认端口呢? 答案是肯定的,redis 提供了灵活的配置方式,一种可以通过配置文件来配置,另一种你可以在运行时通过 config set 命令来修改配