java j2EE 对 reids的使用,包含事物

22 篇文章 0 订阅

1、redis基础

http://www.runoob.com/redis/redis-intro.html

2、主要结合springboot学习了,采用的test类学习

package com.zh;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.transaction.annotation.EnableTransactionManagement;

@MapperScan("com.zh.dao")
@SpringBootApplication
@EnableTransactionManagement
public class SpringBootDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringBootDemoApplication.class, args);
    }
}

主要是开启了支持事物  @EnableTransactionManagement

jar依赖加入

<!-- redis -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

 

配置文件加入redis:

# redis
spring.redis.host=127.0.0.1
spring.redis.port=6379
#spring.redis.password=
#spring.redis.cluster.nodes=127.0.0.1:6379,127.0.0.1:6378,127.0.0.1:6377
spring.redis.jedis.pool.max-active=8
spring.redis.timeout=10000

 

3、测试类使用redis

package com.zh.redisStudy;

import com.zh.SpringBootDemoApplication;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.context.web.WebAppConfiguration;

import javax.annotation.Resource;
import java.util.*;

/**
 * @author zhangH
 * @date 2018/10/25
 * 学习java操作redis的数据类型,多类型的操作
 */
@RunWith(SpringRunner.class)
@SpringBootTest(classes = SpringBootDemoApplication.class)
@WebAppConfiguration
public class RedisStudyTest {

    /**
     * spring 结合的 redis 注入
     */
    @Resource
    private RedisTemplate redisTemplate;

    /**
     * redis 数据类型
     * redisTemplate.opsForValue();
     * 操作字符串
     * string
     */
    @Test
    public void operationStringTest() {
        try {
            redisTemplate.opsForValue().set("stringOp", "operationVal");
            redisTemplate.opsForValue().get("stringOp");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * redis 数据类型
     * redisTemplate.opsForList();
     * 操作list
     * list
     */
    @Test
    public void operationListTest() {
        try {
            List<String> list = new ArrayList<>();
            for (int i = 0; i < 20; i++) {
                if (i % 2 == 0) {
                    redisTemplate.opsForList().leftPush("operationList", "operation" + i);
                } else {
                    redisTemplate.opsForList().rightPush("operationList", "operation" + i);
                }
                list.add("operationAll" + i + i);
            }
            System.out.println("单值插入");
            System.out.println(redisTemplate.opsForList().size("operationList"));
            System.out.println(redisTemplate.opsForList().range("operationList", 1, 10).toString());
            System.out.println(redisTemplate.opsForList().range("operationList", 1, -1).toString());
            System.out.println("整个list插入");
            redisTemplate.opsForList().leftPushAll("operationAll", list);
            System.out.println(redisTemplate.opsForList().size("operationAll"));
            System.out.println(redisTemplate.opsForList().range("operationAll", 1, 10).toString());
            System.out.println(redisTemplate.opsForList().range("operationAll", 1, -1).toString());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * redis 数据类型
     * redisTemplate.opsForHash();
     * 操作hash
     * list
     */
    @Test
    public void operationHashTest() {
        try {
            for (int i = 0; i < 5; i++) {
                redisTemplate.opsForHash().put("map", "mapOne" + i, "mapOne" + i + i);
            }
            Map<String, String> map = new HashMap<>();
            for (int i = 5; i < 10; i++) {
                map.put("map" + i, "map" + i + i);
            }
            redisTemplate.opsForHash().putAll("map", map);

            System.out.println(redisTemplate.opsForHash().size("map"));
            System.out.println(redisTemplate.opsForHash().keys("map"));
            System.out.println(redisTemplate.opsForHash().values("map"));
            for (Object o : redisTemplate.opsForHash().keys("map")) {
                System.out.println(o + "=" + redisTemplate.opsForHash().get("map", o));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * redis 数据类型
     * redisTemplate.opsForSet();
     * 操作set    --插入顺序
     * list
     */
    @Test
    public void operationSetTest() {
        try {
            Set set = new HashSet();
            for (int i = 0; i < 20; i++) {
                redisTemplate.opsForSet().add("operationSet", "operation" + i);
                set.add("operationAll" + i + i);
            }
            System.out.println(redisTemplate.opsForSet().size("operationSet"));
            System.out.println(redisTemplate.opsForSet().members("operationSet"));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * redis 数据类型
     * redisTemplate.opsForZSet();
     * 操作有序set  --指定顺序
     * list
     */
    @Test
    public void operationZSetTest() {
        try {
            int a = 20;
            for (int i = 0; i < 20; i++) {
                redisTemplate.opsForZSet().add("operationZSetNew1", "val" + i, a--);
            }
            System.out.println(redisTemplate.opsForZSet().size("operationZSetNew1"));
            System.out.println(redisTemplate.opsForZSet().range("operationZSetNew1", 1, -1));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

 

 

4、redis的事物采用

 

package com.zh.redisStudy;

import com.zh.SpringBootDemoApplication;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.context.web.WebAppConfiguration;

import javax.annotation.Resource;
import java.beans.Transient;

/**
 * @author zhangH
 * @date 2018/10/25
 * redis 事物
 */
@RunWith(SpringRunner.class)
@SpringBootTest(classes = SpringBootDemoApplication.class)
@WebAppConfiguration
public class RedisThingsTest {
    /**
     * spring 结合的 redis 注入
     */
    @Resource
    private RedisTemplate redisTemplate;

    @Test
    public void things1Test() {
        try {
            if (transactionDoing()) {
                System.out.println("----------" + redisTemplate.opsForValue().get("TransactionStart3"));
                System.out.println("==========" + redisTemplate.opsForValue().get("TransactionEnd3"));
            }
        } catch (Exception e) {
            System.out.println("this operation is fail");
            e.printStackTrace();
        }
        System.out.println("----------" + redisTemplate.opsForValue().get("TransactionStart3"));
        System.out.println("==========" + redisTemplate.opsForValue().get("TransactionEnd3"));
    }

    @Transient
    public boolean transactionDoing() {
        redisTemplate.multi();
        redisTemplate.setEnableTransactionSupport(true);
        redisTemplate.multi();
        redisTemplate.opsForValue().set("TransactionStart3", "TransactionStart");
        int make_error = 1 / 0;
        redisTemplate.opsForValue().set("TransactionEnd3", "TransactionEnd");
        redisTemplate.exec();
        return true;
    }
}

目前就这样了,有啥问题得欢迎提出,我也加深学习下,

go go go

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值