zoukankan      html  css  js  c++  java
  • redis学习资料

    简介

      Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。

    它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。

    Redis 内置了 复制(replication)LUA脚本(Lua scripting), LRU驱动事件(LRU eviction)事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。

    客户端

        1 jedis

             Jedis是Redis官方推荐的Java连接开发工具。GitHub地址  https://github.com/xetorthio/jedis

    • Jedis是Redis的Java实现的客户端,其API提供了比较全面的Redis命令的支持;
    • Jedis中的方法调用是比较底层的暴露的Redis的API,也即Jedis中的Java方法基本和Redis的API保持着一致,了解Redis的API,也就能熟练的使用Jedis。
    • Jedis:使用阻塞的I/O,且其方法调用都是同步的,程序流需要等到sockets处理完I/O才能执行,不支持异步。Jedis客户端实例不是线程安全的,所以需要通过连接池来使用Jedis。
    • Jedis仅支持基本的数据类型如:String、Hash、List、Set、Sorted Set。

            jedis常用API

    方法
    解释
    new Jedis(host, port) 创建jedis对象,参数host是redis服务器地址,参数port是redis服务端口
    set(key,value) 设置字符串类型的数据
    get(key) 获得字符串类型的数据
    hset(key,field,value) 设置哈希类型的数据
    hget(key,field) 获得哈希类型的数据
    lpush(key,values) 设置列表类型的数据
    lpop(key) 列表左面弹栈
    rpop(key) 列表右面弹栈
    del(key) 删除指定的key
    Jedis连接池 展开源码

    jedis连接池的使用

    jedis连接池的基本概念

    jedis连接资源的创建与销毁是很消耗程序性能,所以jedis为我们提供了jedis的池化技术

    jedisPool在创建时初始化一些连接资源存储到连接池中,使用jedis连接资源时不需要创建,

    而是从连接池中获取一个资源进行redis的操作,使用完毕后,不需要销毁该jedis连接资源,

    而是将该资源归还给连接池,供其他请求使用。

        2 redisson

                              GitHub地址 https://github.com/redisson/redisson

                              官方地址  https://redisson.org

    Redisson实现了分布式和可扩展的Java数据结构,提供很多分布式相关操作服务,例如,分布式锁,分布式集合,可通过Redis支持延迟队列。和Jedis相比,功能较为简单,不支持字符串操作,不支持排序、事务、管道、分区等Redis特性。Redisson的宗旨是促进使用者对Redis的关注分离,从而让使用者能够将精力更集中地放在处理业务逻辑上。

    Redisson中的方法则是进行比较高的抽象,每个方法调用可能进行了一个或多个Redis方法调用。

    Redisson:基于Netty框架的事件驱动的通信层,其方法调用是异步的。Redisson的API是线程安全的,所以可以操作单个Redisson连接来完成各种操作。

    Redisson不仅提供了一系列的分布式Java常用对象,基本可以与Java的基本数据结构通用,还提供了许多分布式服务,其中包括(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://blog.csdn.net/u010963948/article/details/79240050

                3 lettuce

                        lettuce 官网地址:https://lettuce.io/

                        lettuce git项目地址:https://github.com/lettuce-io/lettuce-core

                        Lettuce:高级Redis客户端,用于线程安全同步,异步和响应使用,支持集群,Sentinel,管道和编码器。主要在一些分布式缓存框架上使用比较多 基于Netty框架的事件驱动的通信层,其方法调用是异步的。Lettuce的API是线程安全的,所以可以操作单个Lettuce连接来完成           各种操作

             Lettuce是一个高性能基于Java编写的Redis驱动框架,底层集成了Project Reactor提供天然的反应式编程,通信框架集成了Netty使用了非阻塞IO,5.x版本之后融合了JDK1.8的异步编程特性,在保证高性能的同时提供了十分丰富易用的API

       与 Jedis 相比,Lettuce 则完全克服了其线程不安全的缺点:Lettuce 是一个可伸缩的线程安全的 Redis 客户端,支持同步、异步和响应式模式。多个线程可以共享一个连接实例,而不必担心多线程并发问题。它基于优秀 Netty NIO 框架构建,支持 Redis 的高级功能,如          Sentinel集 群,流水线,自动重新连接和 Redis 数据模型。

    springboot2.x 以上使用redis时,默认使用了lettuce封装

  • 相关阅读:
    第一阶段冲刺总结
    读书笔记之梦断代码1
    第二次站立会议5
    第二次站立会议4
    第二次站立会议3
    第二次站立会议2
    Java学习
    项目冲刺第十天
    项目冲刺第九天
    项目冲刺第八天
  • 原文地址:https://www.cnblogs.com/xiaohouye/p/12483059.html
Copyright © 2011-2022 走看看