Redis 值类型以及简单使用

104 阅读1分钟
import com.behavior.BehaviorApplication;
import com.common.cache.CacheService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.Set;

/**
 * @Author Vsunks.v
 * @Date 2022/10/1 10:40
 * @Blog blog.guolei.net/996.mba
 * @Description:
 */
@SpringBootTest(classes = BehaviorApplication.class)
public class RedisTest {

    @Autowired
    private CacheService cacheService;

    // 当value是String类型时,最好不要对一个key多次存储,否则value会被覆盖,常用于缓存,限流,计数器,分布式锁,分布式session
    @Test
    public void StringTest() {
        cacheService.set("StringTest", "zhangsan");
        cacheService.set("StringTest", "lisi");
        cacheService.set("StringTest", "wangwu");
        String s = cacheService.get("StringTest");
        System.out.println(s);
        //结果 wangwu
    }
//当value是set时,可以对一个key多次存储,但是value不能重复,常用于用户行为
    @Test
    public void SetTest() {
        cacheService.sAdd("SetTest", "1");
        cacheService.sAdd("SetTest", "2");
        cacheService.sAdd("SetTest", "3");
        cacheService.sAdd("SetTest", "1");
        Set<String> set = cacheService.setMembers("SetTest");
        System.out.println(set);
        //结果 [1, 2, 3]
    }
//当value是list时,可以对一个key多次存储,但是是队列类型,先进先出,并且取值后就从队列中去除
    @Test
    public void ListTest() {
        cacheService.lLeftPush("ListTest", "1");
        cacheService.lLeftPush("ListTest", "2");
        cacheService.lLeftPush("ListTest", "1");
        System.out.println(cacheService.lRightPop("ListTest"));
        //结果 1
    }
//当value是hash时。可以对一个key多次存储,相当于大key,小key,value的值类型,小key不要重复,重复的话value会覆盖,常用于对象存储,一个key下有多个字段存储,
    @Test
    public void HashTest() {
        cacheService.hPut("HashTest", "name", "zhangsan");
        cacheService.hPut("HashTest", "age", "18");
        cacheService.hPut("HashTest", "age", "20");
        cacheService.hPut("HashTest", "sex", "男");
        Object hashTest = cacheService.hGetAll("HashTest");
        System.out.println(hashTest);
        // 结果 {name=zhangsan, age=20, sex=男}
    }
    //当value是zset时,可以对一个key多次存储,相当于在set基础上,多加了一个score属性,用于排序
    @Test
    public void ZsetTest(){
        cacheService.zAdd("ZsetTest", "zhangsan", 10);
        cacheService.zAdd("ZsetTest", "lisi", 5);
        cacheService.zAdd("ZsetTest", "wangwu", 3);
        cacheService.zAdd("ZsetTest", "wangwu", 15);
        Set<String> set = cacheService.zRange("ZsetTest", 0, 20);
        System.out.println(set);
        //结果 [lisi, zhangsan, wangwu]
    }
}