设为首页 加入收藏

TOP

SpringBoot3集成Redis(二)
2023-08-26 21:11:05 】 浏览:87
Tags:SpringBoot3 集成 Redis
redis-cli 127.0.0.1:6379> select 1 OK 127.0.0.1:6379> set redis-key redis-value OK 127.0.0.1:6379> get redis-key "redis-value" 127.0.0.1:6379> del redis-key (integer) 1

2、数据类型

Strings:字符串是最基本的数据类型,表示一个字节序列,也是最常使用的类型,单个最大能够存储512MB

public void dataString () throws Exception {
    // 1、添加K-V缓存
    redisTemplate.opsForValue().set("key-01","value-01",300, TimeUnit.SECONDS);
    // 2、添加JSON格式
    JsonMapper jsonMapper = new JsonMapper() ;
    String jsonVar = jsonMapper.writeva lueAsString(new IdValue(1,"Json格式")) ;
    redisTemplate.opsForValue().set("key-02",jsonVar,500,TimeUnit.SECONDS);
    Object key01 = redisTemplate.opsForValue().get("key-01");
    Object key02 = redisTemplate.opsForValue().get("key-02");
    log.info("key01:{},key02:{}",key01,key02);
}

Lists:链表结构,可以有序的存储多个字符串值,基于数据左写入右读取的方式可以模拟消息队列,单个最大长度为2^32-1

public void dataList (){
    // 1、左侧写数据
    redisTemplate.opsForList().leftPushAll("data-list","value-01","value-02","value-03");
    // 2、右侧读数据
    Object rightPop01 = redisTemplate.opsForList().rightPop("data-list") ;
    Object rightPop02 = redisTemplate.opsForList().rightPop("data-list") ;
    log.info("rightPop01:{},rightPop02:{}",rightPop01,rightPop02);
}

Sets:用来存储无序的、唯一的字符串集合,通常用来跟踪分析唯一项的业务场景,比如唯一标签下的用户群,独立IP等;

public void dataSet (){
    // 1、写数据
    redisTemplate.opsForSet().add("data-set","Java","C++","Python","C++");
    // 2、读数据
    Object pop01 = redisTemplate.opsForSet().pop("data-set");
    Object pop02 = redisTemplate.opsForSet().pop("data-set");
    log.info("pop01:{},pop02:{}",pop01,pop02);
}

Hashes:Redis本身的K-V结构上,在value中可以再次使用K-V数据类型,在涉及大规模的关系型数据存储时,会优先使用该类型;

public void dataHash (){
    // 1、写数据
    HashMap<String,String> hashMap = new HashMap<>() ;
    hashMap.put("key1","value1") ;
    hashMap.put("key2","value2") ;
    redisTemplate.opsForHash().putAll("data-hash",hashMap);
    // 2、读数据
    Object kv1 = redisTemplate.opsForHash().get("data-hash","key1");
    Object kv2 = redisTemplate.opsForHash().get("data-hash","key2");
    log.info("kv1:{},kv2:{}",kv1,kv2);
}

Sorted-sets:唯一的字符串集合,但是可以通过每个字符串的相关分数来维持顺序,这里的分数可以表示排行顺序,也可以标识为对象的权重或优先级;

public void dataSortedSet (){
    // 1、写数据
    redisTemplate.opsForZSet().add("sorted-set","Java",1.0);
    redisTemplate.opsForZSet().add("sorted-set","Python",3.0);
    redisTemplate.opsForZSet().add("sorted-set","C++",2.0);
    // 2、读数据
    Object popMax = redisTemplate.opsForZSet().popMax("sorted-set");
    Object popMin = redisTemplate.opsForZSet().popMin("sorted-set");
    log.info("popMax:{},popMin:{}",popMax,popMin);
}

3、加锁机制

使用SETNX方法即代码中的setIfAbsent,如果key不存在,则设置key保存字符串的值,也就相当于SET,当key已经存在时,不执行任何操作;

@Service
public class RedisLockService {
    @Resource
    private RedisTemplate<String,Object> redisTemplate ;

    public Boolean lock (String lock,long timeout){
        return redisTemplate.op
首页 上一页 1 2 3 4 下一页 尾页 2/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇简单导出文件 下一篇java死锁、线程状态、线程通信、..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目