Redis的java代码简单上手(适合小白

一 客户端版本

Jedis,Redisson,lettuce3个版本 推荐后两个

Jedis

  • 使用阻塞的I/O,同步调用,不支持异步,不是线程安全的
  • 老牌的 Redis 的 Java 实现客户端,提供了比较全面的 Redis 命令的支持
  • 使用连接池连接,方法调用是比较底层的暴露的Redis的API,也即Jedis中的Java方法基本和Redis的API保持着一致
  • 支持基本的数据类型如:String、Hash、List、Set、Sorted Set
  • 不支持本地缓存
  • 必须使用同步的操作,比如设计金额
  • 官网:http://tool.oschina.net/uploads/apidocs/redis/clients/jedis/Jedis.html
<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
</dependency>

lettuce

  • 是一种可扩展的线程安全的 Redis 客户端,支持异步模式
  • 底层基于 Netty,支持高级的 Redis 特性,比如哨兵,集群,管道,自动重新连接和Redis数据模型。lettuce能够支持redis4,需要java8及以上,在spring boot2之后,redis连接默认就采用了lettuce
  • 地址:https://github.com/lettuce-io/lettuce-core
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

Redisson

  • Redisson实现了分布式和可扩展的Java数据结构,功能较为简单,不支持字符串操作,不支持排序、事务、管道、分区等Redis特性
  • 基于NIO的Netty框架上异步操作。它的API是线程安全的
  • Redisson中的方法则是进行比较高的抽象,每个方法调用可能进行了一个或多个Redis方法调用
  • 支持本地缓存
  • 支持包括(BitSet, Set, Multimap, SortedSet, Map, List, Queue, BlockingQueue, Deque, BlockingDeque, Semaphore, Lock, AtomicLong, CountDownLatch, Publish / Subscribe, Bloom filter, Remote service, Spring cache, Executor service, Live Object service, Scheduler service)
  • 项目地址:https://github.com/redisson/redisson
  • 官方对比:https://dzone.com/articles/redisson-pro-vs-jedis-which-is-faster
<dependency>
    <groupId>org.redisson</groupId>
    <artifactId>redisson-spring-boot-starter</artifactId>
</dependency>

二 Redisson简单上手

yml配置和启动服务端

#单Redis节点模式
redisson:
  singleServerConfig:
    address: 127.0.0.1:6379
运行命令  redis-server.exe redis.windows.conf
   //使用官方封装提供的接口
    @Autowired
    private RedissonClient redissonClient
        //简单的一个加锁
        RLock rLock = redissonClient.getLock(redisKey);
        Boolean res = rLock.tryLock(0, annotation.expireSeconds(), TimeUnit.MILLISECONDS);
        if(!res){
            throw new RuntimeException("数据未发生变化");
        }
   //读取字符串
    public String getStr(String key) {
        RBucket<String> bucket = redissonClient.getBucket(key);
        return bucket.get();
    }
    //缓存字符串
    public void setStr(String key, String value) {
        RBucket<String> bucket = redissonClient.getBucket(key);
        bucket.set(value);
    }
    //移除缓存
      public void delete(String key) {
        redissonClient.getBucket(key).delete();
    }
    //检查redis中是否存在key
      public  Boolean hasKey(String key) {
        RKeys rKeys = redissonClient.getKeys();
        return rKeys.countExists(getNameMapper().map(key)) > 0;
    }
    //获取所有的指定前缀keys
      public Set<String> getKeys(String prefix) {
        Iterable<String> keysByPattern = redissonClient.getKeys().getKeysByPattern(prefix);
        Set<String> keys = new HashSet<>();
        for (String s : keysByPattern) {
            keys.add(s);
        }
        return keys;
    }
    //发布通道消息
    public  <T> void publish(String channelKey, T msg, Consumer<T> consumer) {
        RTopic topic = redissonClient.getTopic(channelKey);
        topic.publish(msg);
        consumer.accept(msg);
    }
    //订阅通道接收消息
        public  <T> void subscribe(String channelKey, Class<T> clazz, Consumer<T> consumer) {
        RTopic topic = redissonClient.getTopic(channelKey);
        topic.addListener(clazz, (channel, msg) -> consumer.accept(msg));
    }
  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值