spring-data-redis模块详解

来源:互联网 发布:网络销售模式有哪些 编辑:程序博客网 时间:2024/06/06 18:00

一.背景

     spring-data是spring框架对数据处理的模块,其中包括数据库dao层处理,以及elasticsearch等等都有封装,而本文主要介绍spring-data-redis模块即对redis数据库的数据处理。

二.pom maven依赖

    目前spring官网spring-data-redis最新稳定版本为2.0.1版本,根据官网介绍,目前该版本主要对spring框架3.x版本的实现,所以不支持3.x版本。

    由于spring-test里面依赖了spring-beans,spring-core,spring-context等,所以只需导入spring-test maven依赖

  

<dependency>    <groupId>org.springframework.data</groupId>    <artifactId>spring-data-redis</artifactId>    <version>2.0.1.RELEASE</version></dependency><dependency>    <groupId>org.springframework</groupId>    <artifactId>spring-test</artifactId>    <version>3.1.2.RELEASE</version>    <scope>test</scope></dependency><dependency>    <groupId>redis.clients</groupId>    <artifactId>jedis</artifactId>    <version>2.9.0</version></dependency><dependency>    <groupId>junit</groupId>    <artifactId>junit</artifactId>    <version>4.8.2</version>    <scope>test</scope></dependency>                                                                                                                                                                                                      
三.配置
# Redis settingsredis.host=localhostredis.port=6479redis.pass=redis.maxIdle=300redis.maxActive=600redis.maxWait=1000redis.testOnBorrow=true
<context:property-placeholder location="classpath:redis.properties" /><bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">    <property name="maxIdle" value="${redis.maxIdle}" />    <!--<property name="maxActive" value="${redis.maxActive}" />    <property name="maxWait" 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:password="${redis.pass}"      p:pool-config-ref="poolConfig"/><bean id="redisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate">    <property name="connectionFactory"   ref="connectionFactory" /></bean>
四.代码实现
1.spring-data-redis代码运用
import org.junit.Test;import org.springframework.data.redis.connection.RedisConnection;import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;import org.springframework.data.redis.core.StringRedisTemplate;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;import javax.annotation.Resource;@ContextConfiguration(locations = {"classpath*:applicationContext.xml"})public class RedisTest extends AbstractJUnit4SpringContextTests {    @Resource(name = "connectionFactory")    private JedisConnectionFactory connectionFactory;    @Resource(name = "redisTemplate")    private  StringRedisTemplate redisTemplate;    @Test    public void testPing(){        RedisConnection redisConnection = connectionFactory.getConnection();        String ping = redisConnection.ping();        System.out.println(ping);    }    @Test    public void testStr(){        /*redisTemplate.execute(new RedisCallback<Boolean>() {            @Nullable            @Override            public Boolean doInRedis(RedisConnection redisConnection) throws DataAccessException {                return null;            }        });*/        redisTemplate.execute((RedisConnection con) -> {            byte[] key = "str".getBytes();            byte[] value = "hello world".getBytes();            con.set(key, value);            return true;        });    }    @Test    public void testList(){        redisTemplate.execute((RedisConnection con) -> {            byte[] key = "list".getBytes();            byte[] ele1 = "java".getBytes();            byte[] ele2 = "c".getBytes();            con.rPush(key, ele1, ele2);            return true;        });    }}
2.jedis(redis java客户端代码实现)
//redisString进行操作public static void redisString(Jedis jedis){    System.out.println(jedis.get("str"));}//redisList进行操作public static void redisList(Jedis jedis){    List<String> list=jedis.lrange("list", 0, 10);    for(String ele:list){        System.out.println(ele);    }}//redisMap进行操作public static void redisMap(Jedis jedis){    Set<String> keys=jedis.hkeys("hash");    List<String> values=jedis.hvals("hash");    Map<String, String> maps=jedis.hgetAll("hash");    System.out.println(keys);    System.out.println(values);    System.out.println(maps);}//redisSet进行操作public static void redisSet(Jedis jedis){    Set<String> sets=jedis.smembers("set");    System.out.println(sets);}public static void main(String[] args) {    Jedis jedis=new Jedis("localhost");    System.out.println("Connection to server sucessfully");    //查看服务是否运行    System.out.println("Server is running: "+jedis.ping());    System.out.println(jedis.keys("*"));    redisMap(jedis);}
详细代码,请移步:https://github.com/followwwind/springproject.git

原创粉丝点击