文档章节

spring整合redis

杨肥麻
 杨肥麻
发布于 2017/09/08 23:39
字数 676
阅读 15
收藏 1
点赞 0
评论 0

1.安装redis缓存服务器

到https://github.com/dmajkic/redis/downloads网站上下载

redis-2.4.5-win32-win64.zip 包含32位和64位

2.下载后解压(打开缓存服务器)

然后cmd执行 redis-server.exe redis.conf

 

Spring整合redis

1.可以用maven下载

jedis-2.1.0.jar

spring-data-redis-1.0.2.RELEASE.jar

Spring项目加入这两个jar包

2.redis配置文件redis.properties

#redis setting  

redis.host=127.0.0.1

redis.port=6379

redis.password=

redis.maxIdle=100

redis.maxActive=300

redis.maxWait=1000

redis.testOnBorrow=true

redis.timeout=100000

fep.local.cache.capacity =10000

3.spring-redis.xml

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"

    xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"

    xsi:schemaLocation="

     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd

     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd

     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd

     http://www.springframework.org/schema/context  http://www.springframework.org/schema/context/spring-context-3.2.xsd"

    default-autowire="byName" default-lazy-init="true">

 

    <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">

        <property name="maxIdle" value="${redis.maxIdle}" />

        <property name="maxWait" value="${redis.maxWait}" />

        <property name="testOnBorrow" value="${redis.testOnBorrow}" />

    </bean>

    <!-- redis服务器中心 -->

    <bean id="connectionFactory"

        class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">

        <property name="poolConfig" ref="poolConfig" />

        <property name="port" value="${redis.port}" />

        <property name="hostName" value="${redis.host}" />

        <property name="password" value="${redis.password}" />

        <property name="timeout" value="${redis.timeout}"></property>

    </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="redisUtil" class="com.redis.RedisUtil">

        <property name="redisTemplate" ref="redisTemplate" />

    </bean>

 

</beans>

4.applicationContext.xml

 <context:property-placeholder location="classpath:redis.properties"/>

 <import resource="classpath:redis-config.xml"/>

5.缓存类RedisUtil.Java

package com.redis;

 

import java.io.Serializable;  

import java.util.Set;  

import java.util.concurrent.TimeUnit;  

 

import org.springframework.data.redis.core.RedisTemplate;  

import org.springframework.data.redis.core.ValueOperations;  

 

public class RedisUtil {

 

    private RedisTemplate<Serializable, Object> redisTemplate;

 

    /**

     * 批量删除对应的value

     *

     * @param keys

     */

    public void remove(final String... keys) {

        for (String key : keys) {

            remove(key);

        }

    }

 

    /**

     * 批量删除key

     *

     * @param pattern

     */

    public void removePattern(final String pattern) {

        Set<Serializable> keys = redisTemplate.keys(pattern);

        if (keys.size() > 0)

            redisTemplate.delete(keys);

    }

 

    /**

     * 删除对应的value

     *

     * @param key

     */

    public void remove(final String key) {

        if (exists(key)) {

            redisTemplate.delete(key);

        }

    }

 

    /**

     * 判断缓存中是否有对应的value

     *

     * @param key

     * @return

     */

    public boolean exists(final String key) {

        return redisTemplate.hasKey(key);

    }

 

    /**

     * 读取缓存

     *

     * @param key

     * @return

     */

    public Object get(final String key) {

        Object result = null;

        ValueOperations<Serializable, Object> operations = redisTemplate.opsForValue();

        result = operations.get(key);

        return result;

    }

 

    /**

     * 写入缓存

     *

     * @param key

     * @param value

     * @return

     */

    public boolean set(final String key, Object value) {

        boolean result = false;

        try {

            ValueOperations<Serializable, Object> operations = redisTemplate.opsForValue();

            operations.set(key, value);

            result = true;

        } catch (Exception e) {

            //logger.error("set cache error", e);

        }

        return result;

    }

 

    /**

     * 写入缓存

     *

     * @param key

     * @param value

     * @return

     */

    public boolean set(final String key, Object value, Long expireTime) {

        boolean result = false;

        try {

            ValueOperations<Serializable, Object> operations = redisTemplate.opsForValue();

            operations.set(key, value);

            redisTemplate.expire(key, expireTime, TimeUnit.SECONDS);

            result = true;

        } catch (Exception e) {

            //logger.error("set cache error", e);

        }

        return result;

    }

    

    public long increment(final String key , long delta){

         return redisTemplate.opsForValue().increment(key, delta);

    }

 

    public void setRedisTemplate(RedisTemplate<Serializable, Object> redisTemplate) {

        this.redisTemplate = redisTemplate;

    }

}

6.Controller访问

package com.controller;

 

import java.util.HashMap;

import java.util.Map;

 

import javax.servlet.http.HttpServletRequest;

 

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestParam;

 

 

import com.model.User;

import com.redis.RedisUtil;

import com.service.LoginService;

 

@Controller

public class LoginController{

 

@Autowired

private LoginService  loginService;

 

@Autowired

private RedisUtil redisUtil;  //记得注入

 

@RequestMapping(value = "/queryUser.do")

public String queryUser(@RequestParam String hello,

HttpServletRequest request){

 User user = new User();

 Map<String, String> map = new HashMap<String, String>();

 Map<String, String> mapu = new HashMap<String, String>();

 if (redisUtil.exists("map")) {

     mapu = (Map)redisUtil.get("map");

 }

 if(mapu==null){

 user = loginService.queryUser(36);

 map.put("username", user.getUsername());

 map.put("password", user.getPassword());

 redisUtil.set("map", map);

 }

 return "user_list";

}

 

@RequestMapping(value = "/addUser.do")

public String addUser(@RequestParam String username, String password,

HttpServletRequest request){

User user=new User();

user.setUsername(username);

user.setPassword(password);

loginService.insertUser(user);

 return "user_list";

}

}

 

 

 

© 著作权归作者所有

共有 人打赏支持
杨肥麻
粉丝 1
博文 42
码字总数 30289
作品 0
深圳

暂无相关文章

Cube、Cuboid 和 Cube Segment

1.Cube (或Data Cube),即数据立方体,是一种常用于数据分析与索引的技术;它可以对原始数据建立多维度索引。通过 Cube 对数据进行分析,可以大大加快数据的查询效率 2.Cuboid 在 Kylin 中特...

无精疯 ⋅ 17分钟前 ⋅ 0

github太慢

1:用浏览器访问 IPAddress.com or http://tool.chinaz.com 使用 IP Lookup 工具获得github.com和github.global.ssl.fastly.net域名的ip地址 2:/etc/hosts文件中添加如下格式(IP最好自己查一...

whoisliang ⋅ 19分钟前 ⋅ 0

非阻塞同步之 CAS

为解决线程安全问题,互斥同步相当于以时间换空间。多线程情况下,只有一个线程可以访问同步代码。这种同步也叫阻塞同步(Blocking Synchronization). 这种同步属于一种悲观并发策略。认为只...

长安一梦 ⋅ 30分钟前 ⋅ 0

云计算的选择悖论如何对待?

人们都希望在工作和生活中有所选择。但心理学家的调查研究表明,在多种选项中进行选择并不一定会使人们更快乐,甚至不会产生更好的决策。心理学家Barry Schwartz称之为“选择悖论”。云计算为...

linux-tao ⋅ 32分钟前 ⋅ 0

我的第一篇个人博客

虽然这是个技术博客,但是,我总是想写一些自己的东西,所有就大胆的在这里写下了第一篇非技术博客。技术博客也很久没有更新,个人原因。 以后自己打算在这里写一些非技术博客,可能个人观点...

Mrs_CoCo ⋅ 33分钟前 ⋅ 0

Redis 注册为 Windows 服务

Redis 注册为 Windows 服务 redis 注册为 windows 服务相关命令 注册服务 redis-server.exe –service-install redis.windows.conf 删除服务 redis-server –service-uninstall 启动服务 re......

Os_yxguang ⋅ 33分钟前 ⋅ 0

世界那么大,语言那么多,为什么选择Micropython,它的优势在哪?

最近国内MicroPython风靡程序界,是什么原因导致它这么火呢?是因为他功能强大,遵循Mit协议开源么? 错!因为使用它真的是太舒服了!!! Micropython的由来,这得益于Damien George这位伟大...

bodasisiter ⋅ 37分钟前 ⋅ 0

docker 清理总结

杀死所有正在运行的容器 docker kill $(docker ps -a -q) 删除所有已经停止的容器(docker rm没有加-f参数,运行中的容器不会删掉) docker rm $(docker ps -a -q) 删除所有未打 dangling 标...

vvx1024 ⋅ 47分钟前 ⋅ 0

关于学习

以前学车的时候,教练说了这样的一句话:如果一个人坐在车上一直学,一直学,反而不如大家轮流着学。因为一个人一直学,就没有给自己留空间来反思和改进。而轮流着学的时候大家下来之后思考上...

mskk ⋅ 51分钟前 ⋅ 0

压缩工具之gzip-bzip2-xz

win下常见压缩工具:rar zip 7z linux下常见压缩工具:zip gz bz2 xz tar.gz tar.bz2 tar.xz gzip 不支持目录压缩 gzip 1.txt #压缩。执行后1.txt消失,生成1.txt.gz压缩文件 gzip -d 1.txt....

ZHENG-JY ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部