Giter Club home page Giter Club logo

structure-redisson's Introduction

structure-redission

一个对redission的封装,redission要比redis功能更强大

redisson 的使用

POM依赖###

        <dependency>
            <groupId>cn.structured</groupId>
            <artifactId>structure-redission-starter</artifactId>
            <version>${last.version}</version>
        </dependency>

redisson的使用

使用redissonClient

     @Resource
     private RedissonClient redissonClient;

使用RedissonClient 存储对象

    RBucket<String> test = redissonClient.getBucket("test");
    test.set("test redissonClient");
    System.out.println("test = " + test.get());

使用RedissonClient Map List 对象结构请到redisson官网查看

redisson Github地址

redisson锁的使用

    @RequestMapping("/testLock")
    @Lock(keys = "#key")
    public void testLock(@RequestParam("key") String key) throws InterruptedException {
        System.out.println("key = " + key);
        Thread.sleep(10000L);
    }

    @RequestMapping("/testLock2")
    @Lock(keys = "#testVO.id")
    public void testLockObject(@RequestBody TestVO testVO ) throws InterruptedException {
        System.out.println("key = " + testVO.getId());
        Thread.sleep(10000L);
    }

缓存注解说明

1. @WCache 写缓存注解

写缓存注解是对要要执行的方法返回的结果写入缓存中

	@WCache(key = "#giftId",isObjCache = false,
			map = @CMap(isMap = true ,mapKey = "ACCOUNT-GIFT:_#accountId"),
			time = @CTime(isTime = true,time = 4,timeType = TimeUnit.HOURS))

@WCache 支持map缓存策略 list缓存策略,时间缓存策略,是否为对象缓存

2. @RCache 读缓存注解

读对象缓存注解通过代理实现无则写入,有则读取如果读取成功不会执行要代理的方法只有在写入缓存是会指定要代理的方法取得返回结果写入缓存中

    @RCache(key = "GIFT-TYPE:_#giftType",time = 1)

3. @RListCache集合缓存注解

集合缓存注解是对redisList存储结构封装list缓存注解 可以搭配 map结构和对象结构混合使用

4. @RCacheMa pMap缓存注解

Map缓存注解 是对redis-Map存储结构封装map缓存注解 可以搭配 list结构和对象结构混合使用

    @RCacheMap(mapKey = "ACCOUNT-GIFT:_#accountId",key = "#giftId",isTime = true,time = 4,timeType = TimeUnit.HOURS)

读取存储在map中的单条数据

5. @RMapAllCache 读全部map缓存注解

    @RMapAllCache(mapKey = "ACCOUNT-GIFT:_#accountId",keyName = "giftId",time = @CTime(isTime = true,time = 4,timeType = TimeUnit.HOURS))

读取map中全部的数据

redisson缓存的使用

    /**
     * 写入缓存,同时构建 object 对象和 集合对象,以及map对象
     * @param testVO
     * @return
     */
    @RequestMapping(value = "cache")
    @WCache(key = "#testVO.id",isObjCache = true
            ,list = @CList(listKeyName = "test-list",isList = true,size = 100,time = @CTime(isTime = true,time = 10))
            ,map = @CMap(mapKey = "test-map",isMap = true,time = @CTime(isTime = true,time = 100))
    )
    public TestVO cache(TestVO testVO){
        System.out.println("testVO = " + testVO);
        return testVO;
    }

    /**
     * 读缓存 如果没有读到则更新缓存 object
     * @param id
     * @return
     */
    @RCache(key = "#id")
    @RequestMapping("/getCache")
    public TestVO getCache(@RequestParam("id") String id){
        TestVO testVO = new TestVO();
        testVO.setId(id);
        testVO.setName("没有读取到");
        System.out.println("需要写入缓存,如果缓存中有值则不会写入缓存");
        return testVO;
    }

    /**
     * map和list配合使用
     * @param testVO
     * @return
     */
    @RequestMapping(value = "cacheMapList")
    @WCache(key = "#testVO.id",isObjCache = false
            ,list = @CList(listKeyName = "cache-list",isList = true,size = 100
            ,time = @CTime(isTime = true,time = 10),mapKey = "cache-map",value = CList.ListType.MAP)
            ,map = @CMap(mapKey = "cache-map",isMap = true,time = @CTime(isTime = true,time = 100))
    )
    public TestVO cacheMapList(TestVO testVO){
        System.out.println("testVO = " + testVO);
        return testVO;
    }

    /**
     * list配合object使用
     * @param testVO
     * @return
     */
    @RequestMapping(value = "cacheList")
    @WCache(key = "#testVO.id",isObjCache = true
            ,list = @CList(listKeyName = "cache-list-key",isList = true,size = 100
            ,time = @CTime(isTime = true,time = 10),value = CList.ListType.KEY))
    public TestVO cacheList(TestVO testVO){
        System.out.println("testVO = " + testVO);
        return testVO;
    }

    /**
     * list和map关联的数据结构
     * 该结构需要手动补偿缓存值
     * @return
     */
    @RListCache(key = "cache-list",mapKey = "cache-map",value = CList.ListType.MAP)
    public List<TestVO> getMapList(){
        return new ArrayList<>();
    }

structure-redisson's People

Contributors

chucklcq avatar lchqjava avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.