Maven_Spring_Redis 实例

来源:互联网 发布:wind资讯行业经济数据 编辑:程序博客网 时间:2024/06/16 20:31

Linux_Redis 安装笔记
Linux_Redis_Cluster 安装笔记

这里写图片描述

BaseDao.java

package com.demo.redis.dao;import java.util.Collection;import java.util.List;import java.util.Map;import java.util.Set;import java.util.concurrent.TimeUnit;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.redis.core.RedisTemplate;public abstract class BaseDao<K, V, HK, HV> {    @Autowired    protected RedisTemplate<K, V> redisTemplate;    public void deleteKey(K key) {        redisTemplate.delete(key);    }    public void set(K key, V value) {        redisTemplate.opsForValue().set(key, value);    }    public void set(K key, V value, final long timeout, final TimeUnit unit) {        redisTemplate.opsForValue().set(key, value, timeout, unit);    }    public V get(final Object key) {        return redisTemplate.opsForValue().get(key);    }    // List    public void setForList(K key, long index, V value) {        redisTemplate.boundListOps(key).set(index, value);    }    public Long leftPushForList(K key, V value) {        return redisTemplate.opsForList().leftPush(key, value);    }    public Long leftPushAllForList(K key, V... values) {        return redisTemplate.opsForList().leftPushAll(key, values);    }    public Long leftPushAllForList(K key, Collection<V> values) {        return redisTemplate.opsForList().leftPushAll(key, values);    }    public Long rightPushForList(K key, V value) {        return redisTemplate.opsForList().rightPush(key, value);    }    public Long rightPushAllForList(K key, V... values) {        return redisTemplate.opsForList().rightPushAll(key, values);    }    public Long rightPushAllForList(K key, Collection<V> values) {        return redisTemplate.opsForList().rightPushAll(key, values);    }    public void updateList(K key, long index, V value) {// 修改        redisTemplate.boundListOps(key).set(index, value);    }    public void leftPopForList(K key) {        redisTemplate.boundListOps(key).leftPop();    }    public void removeFromList(K key, long index, V value) {// 修改        redisTemplate.boundListOps(key).remove(index, value);    }    public void getListValue(K key, long index) {// 查詢单个值        redisTemplate.boundListOps(key).index(index);    }    public Long sizeOfList(K key) {// size        return redisTemplate.boundListOps(key).size();    }    public List<V> getList(K key) {// 查询所有        return redisTemplate.boundListOps(key).range(0, sizeOfList(key));    }    public List<V> getSubList(K key, long start, long end) {// 查询部分列表        return redisTemplate.boundListOps(key).range(start, end);    }    // Set    public Long addSet(K key, Set<V> values) {        Long count = (long) 0;        for (V v : values) {            count += redisTemplate.boundSetOps(key).add(v);        }        return count;    }    public Long removeFromSet(K key, V value) {        return redisTemplate.boundSetOps(key).remove(value);    }    public Long sizeOfSet(K key) {        return redisTemplate.boundSetOps(key).size();    }    public Set<V> getSet(K key) {        return redisTemplate.boundSetOps(key).members();    }    // Map<K, V>    public void putAllForMap(K key, Map<? extends HK, ? extends HV> ageMap) {        redisTemplate.boundHashOps(key).putAll(ageMap);    }    public Map<HK, HV> getMap(K key) {        return (Map<HK, HV>) redisTemplate.boundHashOps(key).entries();    }    public Boolean hasHashKey(K key, Object hashKey) {        return redisTemplate.boundHashOps(key).hasKey(hashKey);    }    public void setForMap(K key, Object hashKey, Object hashValue) {        redisTemplate.boundHashOps(key).put(hashKey, hashValue);    }    public Set<HK> hashKeys(K key) {        return (Set<HK>) redisTemplate.boundHashOps(key).keys();    }    public Object getHashValue(K key, Object hashKey) {        return redisTemplate.boundHashOps(key).get(hashKey);    }    public Long removeFromMap(K key, Object hashKey) {        return redisTemplate.boundHashOps(key).delete(hashKey);    }}

UserDao.java

package com.demo.redis.dao.impl;import org.springframework.stereotype.Repository;import com.demo.redis.dao.BaseDao;@Repositorypublic class UserDao extends BaseDao<String, String, String, String> {}

applicationContext.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:p="http://www.springframework.org/schema/p"    xmlns:context="http://www.springframework.org/schema/context"    xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx"    xmlns:aop="http://www.springframework.org/schema/aop"    xsi:schemaLocation="              http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd              http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">    <context:property-placeholder location="classpath:redis.properties" />    <context:component-scan base-package="com.demo.redis"></context:component-scan>    <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">        <property name="maxIdle" value="${redis.maxIdle}" />        <property name="maxTotal" value="${redis.maxActive}" />        <property name="maxWaitMillis" value="${redis.maxWait}" />        <property name="testOnBorrow" value="${redis.testOnBorrow}" />    </bean>    <bean id="connectionFactory"        class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"        p:host-name="${redis.host}" p:port="${redis.port}" p:pool-config-ref="poolConfig" />    <bean id="redisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate">        <property name="connectionFactory" ref="connectionFactory" />    </bean></beans> 

applicationContext2.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:p="http://www.springframework.org/schema/p"    xmlns:context="http://www.springframework.org/schema/context"    xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx"    xmlns:aop="http://www.springframework.org/schema/aop"    xsi:schemaLocation="              http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd              http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">    <context:property-placeholder location="classpath:redis.properties" />    <context:component-scan base-package="com.demo.redis"></context:component-scan>    <bean id="redisClusterConfig"        class="org.springframework.data.redis.connection.RedisClusterConfiguration">        <property name="maxRedirects" value="6"></property>        <property name="clusterNodes">            <set>                <bean class="org.springframework.data.redis.connection.RedisNode">                    <constructor-arg name="host" value="192.168.216.139"></constructor-arg>                    <constructor-arg name="port" value="7001"></constructor-arg>                </bean>                <bean class="org.springframework.data.redis.connection.RedisNode">                    <constructor-arg name="host" value="192.168.216.139"></constructor-arg>                    <constructor-arg name="port" value="7002"></constructor-arg>                </bean>                <bean class="org.springframework.data.redis.connection.RedisNode">                    <constructor-arg name="host" value="192.168.216.139"></constructor-arg>                    <constructor-arg name="port" value="7003"></constructor-arg>                </bean>                <bean class="org.springframework.data.redis.connection.RedisNode">                    <constructor-arg name="host" value="192.168.216.139"></constructor-arg>                    <constructor-arg name="port" value="7004"></constructor-arg>                </bean>                <bean class="org.springframework.data.redis.connection.RedisNode">                    <constructor-arg name="host" value="192.168.216.139"></constructor-arg>                    <constructor-arg name="port" value="7005"></constructor-arg>                </bean>                <bean class="org.springframework.data.redis.connection.RedisNode">                    <constructor-arg name="host" value="192.168.216.139"></constructor-arg>                    <constructor-arg name="port" value="7006"></constructor-arg>                </bean>            </set>        </property>    </bean>    <bean id="redisConnectionFactory"        class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">        <constructor-arg name="clusterConfig" ref="redisClusterConfig" />        <property name="timeout" value="5000" />        <!-- <property name="poolConfig" ref="poolConfig"/> -->    </bean>    <bean id="redisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate">        <property name="connectionFactory" ref="redisConnectionFactory" />    </bean></beans> 

log4j.properties

# log dir#logdir=D:/remote/logs# Global logging configuration,  debug < info < warn < error < fatal# log4j.rootLogger = [debug], [info], [warn], [error], [fatal], [stdout]log4j.rootLogger=info, stdout# Console outputlog4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target=System.outlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%d{yyy-MM-dd HH:mm:ss } [%t] %5p %c{1}:%L - %m%n# error outputlog4j.appender.error=org.apache.log4j.DailyRollingFileAppender#log4j.appender.error.MaxFileSize=10MB#log4j.appender.error.MaxBackupIndex=10log4j.appender.error.File=${logdir}/error.txtlog4j.appender.error.layout=org.apache.log4j.PatternLayoutlog4j.appender.error.layout.ConversionPattern=%d %-5p (%13F:%L) %3x - %m%n# debug outputlog4j.appender.debug=org.apache.log4j.DailyRollingFileAppender#log4j.appender.debug.MaxFileSize=10MB#log4j.appender.debug.MaxBackupIndex=10log4j.appender.debug.File=${logdir}/debug.txtlog4j.appender.debug.layout=org.apache.log4j.PatternLayoutlog4j.appender.debug.layout.ConversionPattern=%d %-5p (%13F:%L) %3x - %m%n# info outputlog4j.appender.debug=org.apache.log4j.DailyRollingFileAppender#log4j.appender.debug.MaxFileSize=10MB#log4j.appender.debug.MaxBackupIndex=10log4j.appender.debug.File=${logdir}/info.txtlog4j.appender.debug.layout=org.apache.log4j.PatternLayoutlog4j.appender.debug.layout.ConversionPattern=%d %-5p (%13F:%L) %3x - %m%n

redis.properties

# Redis settings  redis.host=192.168.216.132redis.port=6379#redis.pass=java2000_wl  redis.maxIdle=300  redis.maxActive=600  redis.maxWait=1000  redis.testOnBorrow=true  

RedisClusterTest.java

package com.demo.redis.test;import java.util.ArrayList;import java.util.HashMap;import java.util.HashSet;import java.util.List;import java.util.Map;import java.util.Set;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import com.demo.redis.dao.impl.UserDao;@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations = { "classpath*:applicationContext2.xml" })public class RedisClusterTest {    @Autowired    private UserDao userDao;    @Test    public void opsForValue() {        // userDao.set("key1", "value1");        // System.out.println(userDao.get("key1"));        for (int i = 0; i < 100; i++) {            userDao.set("key" + i, "value" + i);            System.out.println(userDao.get("key" + i));        }    }    // @Test    public void opsForList() {        userDao.deleteKey("names");        List<String> names = new ArrayList<String>();        names.add("zhangsan");        names.add("lisi");        names.add("wangwu");        names.add("zhaoliu");        userDao.rightPushAllForList("names", names);// 从左向右添加数据        long size = userDao.sizeOfList("names");        List<String> namesFromRedis = userDao.getList("names"); // 返回列表        for (String name : namesFromRedis) {            System.out.println(name);        }        System.out.println("-----------------------------------------");        userDao.setForList("names", 1, "lili1");        namesFromRedis = userDao.getList("names");        for (String name : namesFromRedis) {            System.out.println(name);        }        System.out.println("-----------------------------------------");        userDao.leftPopForList("names");        size = userDao.sizeOfList("names");        namesFromRedis = userDao.getList("names");        for (String name : namesFromRedis) {            System.out.println(name);        }        System.out.println("-----------------------------------------");        System.out.println(userDao.sizeOfList("names"));// 4        userDao.deleteKey("names");// 删除key        System.out.println(userDao.sizeOfList("names"));// 0    }    // @Test    public void opsForSet() {        userDao.deleteKey("names");        Set<String> names = new HashSet<String>();        names.add("zhangsan");        names.add("lisi");        names.add("wangwu");        names.add("zhaoliu");        userDao.addSet("names", names);        long size = userDao.sizeOfSet("names");// size        System.out.println("-----------------------------------------");        userDao.removeFromSet("names", "zhangsan");        Set<String> nameSet = userDao.getSet("names");// 返回set        for (String name : nameSet) {            System.out.println(name);        }    }    // @Test    public void opsForHash() {        userDao.deleteKey("ages");        Map<String, String> ageMap = new HashMap<String, String>();        ageMap.put("zhangsan", "24");        ageMap.put("lisi", "25");        ageMap.put("wangwu", "26");        System.out.println("-----------------------------------------");        userDao.putAllForMap("ages", ageMap);        ageMap = userDao.getMap("ages");        for (String name : ageMap.keySet()) {            System.out.println(name + "," + ageMap.get(name));        }        if (userDao.hasHashKey("ages", "zhangsan")) {            userDao.setForMap("ages", "zhangsan", "23");        }        System.out.println("-----------------------------------------");        userDao.removeFromMap("ages", "wangwu");        Set<String> names = userDao.hashKeys("ages");        for (String name : names) {            System.out.println(name + "," + userDao.getHashValue("ages", name));// 查询        }    }}

RedisTest.java

package com.demo.redis.test;import java.util.ArrayList;import java.util.HashMap;import java.util.HashSet;import java.util.List;import java.util.Map;import java.util.Set;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import com.demo.redis.dao.impl.UserDao;@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations = { "classpath*:applicationContext.xml" })public class RedisTest {    @Autowired    private UserDao userDao;    @Test    public void opsForValue() {        userDao.set("key1", "value1");        System.out.println(userDao.get("key1"));    }    // @Test    public void opsForList() {        userDao.deleteKey("names");        List<String> names = new ArrayList<String>();        names.add("zhangsan");        names.add("lisi");        names.add("wangwu");        names.add("zhaoliu");        userDao.rightPushAllForList("names", names);// 从左向右添加数据        long size = userDao.sizeOfList("names");        List<String> namesFromRedis = userDao.getList("names"); // 返回列表        for (String name : namesFromRedis) {            System.out.println(name);        }        System.out.println("-----------------------------------------");        userDao.setForList("names", 1, "lili1");        namesFromRedis = userDao.getList("names");        for (String name : namesFromRedis) {            System.out.println(name);        }        System.out.println("-----------------------------------------");        userDao.leftPopForList("names");        size = userDao.sizeOfList("names");        namesFromRedis = userDao.getList("names");        for (String name : namesFromRedis) {            System.out.println(name);        }        System.out.println("-----------------------------------------");        System.out.println(userDao.sizeOfList("names"));// 4        userDao.deleteKey("names");// 删除key        System.out.println(userDao.sizeOfList("names"));// 0    }    // @Test    public void opsForSet() {        userDao.deleteKey("names");        Set<String> names = new HashSet<String>();        names.add("zhangsan");        names.add("lisi");        names.add("wangwu");        names.add("zhaoliu");        userDao.addSet("names", names);        long size = userDao.sizeOfSet("names");// size        System.out.println("-----------------------------------------");        userDao.removeFromSet("names", "zhangsan");        Set<String> nameSet = userDao.getSet("names");// 返回set        for (String name : nameSet) {            System.out.println(name);        }    }    // @Test    public void opsForHash() {        userDao.deleteKey("ages");        Map<String, String> ageMap = new HashMap<String, String>();        ageMap.put("zhangsan", "24");        ageMap.put("lisi", "25");        ageMap.put("wangwu", "26");        System.out.println("-----------------------------------------");        userDao.putAllForMap("ages", ageMap);        ageMap = userDao.getMap("ages");        for (String name : ageMap.keySet()) {            System.out.println(name + "," + ageMap.get(name));        }        if (userDao.hasHashKey("ages", "zhangsan")) {            userDao.setForMap("ages", "zhangsan", "23");        }        System.out.println("-----------------------------------------");        userDao.removeFromMap("ages", "wangwu");        Set<String> names = userDao.hashKeys("ages");        for (String name : names) {            System.out.println(name + "," + userDao.getHashValue("ages", name));// 查询        }    }}

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">    <modelVersion>4.0.0</modelVersion>    <groupId>com.demo</groupId>    <artifactId>maven-spring-redis</artifactId>    <version>0.0.1-SNAPSHOT</version>    <dependencies>        <!-- junit单元测试 -->        <dependency>            <groupId>junit</groupId>            <artifactId>junit</artifactId>            <version>4.12</version>            <scope>test</scope>        </dependency>        <!-- log4j日志 -->        <dependency>            <groupId>org.slf4j</groupId>            <artifactId>slf4j-log4j12</artifactId>            <version>1.7.21</version>        </dependency>        <!-- spring整合Junit -->        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-test</artifactId>            <version>4.3.0.RELEASE</version>            <scope>test</scope>        </dependency>        <!-- spring核心包 -->        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-context</artifactId>            <version>4.3.0.RELEASE</version>        </dependency>        <dependency>            <groupId>org.springframework.data</groupId>            <artifactId>spring-data-redis</artifactId>            <version>1.7.6.RELEASE</version>            <type>jar</type>            <scope>compile</scope>        </dependency>        <dependency>            <groupId>redis.clients</groupId>            <artifactId>jedis</artifactId>            <version>2.9.0</version>        </dependency>    </dependencies></project>

maven-spring-redis源码

原创粉丝点击