当前位置: 首页 > news >正文

Jedis客户端快速入门

初识Redis

Redis 是一个开源的,基于内存存储的、键值型的存储系统,它可以用作数据库、缓存和消息中间件。 Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。

执行速度: 读速度 11.2万次/秒 写速度8.6万/次 平均10万次/秒

其中键值型,是指Redis中存储的数据都是以key、value对的形式存储,而value支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists),集合(sets),有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。

Redis作为数据库是一个NoSql数据库,NoSQL则是相对于传统关系型数据库而言,有很大差异的一种数据库。

NoSQL

NoSql数据库。是相对于传统关系型数据库而言,有很大差异的一种特殊的数据库,因此也称之为非关系型数据库

与关系型数据库的区别:

  1. 结构化与非结构化

    传统关系型数据库是结构化数据,每一张表都有严格的约束信息,比如字段名、字段数据类型、字段约束等等信息,插入的数据必须遵守这些约束

    而NoSql则对数据库格式没有严格约束,往往形式松散,自由。可以是键值型、也可以是文档型(ElasticSearch后期学习)、甚至可以是图格式

  2. 关联与非关联

    传统数据库的表与表之间往往存在关联,例如外键

    而非关系型数据库不存在关联关系,要维护关系要么靠代码中的业务逻辑,要么靠数据之间的耦合

  3. 查询方式

    传统关系型数据库会基于Sql语句做查询,语法有统一标准

    而不同的非关系数据库查询语法差异极大,五花八门各种各样

  4. 事务

    传统关系型数据库能满足事务ACID的原则

    而非关系型数据库往往不支持事务,或者不能严格保证ACID的特性,只能实现基本的一致性

  5. 存储方式

    关系型数据库基于磁盘进行存储,会有大量的磁盘IO,对性能有一定影响

    非关系型数据库,他们的操作更多的是依赖于内存来操作,内存的读写速度会非常快,性能自然会好一些

  6. 扩展性

    关系型数据库集群模式一般是主从,主从数据一致,起到数据备份的作用,称为垂直扩展

    非关系型数据库可以将数据拆分,存储在不同机器上,可以保存海量数据,解决内存大小有限的问题。称为水平扩展

    关系型数据库因为表之间存在关联关系,如果做水平扩展会给数据查询带来很多麻烦

Jedis客户端

Jedis的官网地址: GitHub - redis/jedis: Redis Java client

快速入门

  1. 创建maven项目,引入依赖

    <!--jedis-->
    <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>3.7.0</version>
    </dependency>
    <!--单元测试-->
    <dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter</artifactId><version>5.7.0</version><scope>test</scope>
    </dependency>
    
  2. 建立连接

    新建一个单元测试,内容如下:

        private Jedis jedis;@BeforeEachvoid setUp() {jedis = new Jedis("172.26.6.53", 6379);}
    
  3. 测试

        @Testvoid testString() {// 存入数据String result = jedis.set("name", "虎哥");System.out.println("result = " + result);// 获取数据String name = jedis.get("name");System.out.println("name = " + name);}@Testvoid testHash() {// 插入hash数据jedis.hset("csmall:spu:2", "id", "2");jedis.hset("csmall:spu:2", "name", "iPhone13");// 获取Map<String, String> map = jedis.hgetAll("csmall:spu:2");System.out.println(map);}
    
  4. 释放资源

    @AfterEach
    void tearDown() {if (jedis != null) {jedis.close();}
    }
    

Jedis连接池

Jedis本身是线程不安全的,并且频繁的创建和销毁连接会有性能损耗,因此我们推荐大家使用Jedis连接池代替Jedis的直连方式

有关池化思想,并不仅仅是这里会使用,很多地方都有,比如说我们的数据库连接池,比如我们tomcat中的线程池,这些都是池化思想的体现。

 上一篇文章:Redis命令操作-CSDN博客icon-default.png?t=O83Ahttps://blog.csdn.net/Z0412_J0103/article/details/143225721下一篇文章:


http://www.mrgr.cn/news/60919.html

相关文章:

  • 递归:如何用三行代码找到“最终推荐人”?
  • 15分钟学 Go 第 26 天:基本的Web服务
  • Vue 3 插件常见用途和场景
  • MySQL常见面试题概览
  • 【系统设计】深入了解四种通信机制:从同步到异步的演变
  • 中国多时期土地利用遥感监测GIS数据1980至2020年土地利用数据LUCC-最新出炉 附下载链接
  • DAY46 ||188.买卖股票的最佳时机IV |309.最佳买卖股票时机含冷冻期 |714.买卖股票的最佳时机含手续费
  • ​Leetcode 166.珠宝的最高价值​ 网格图dp C++实现
  • C#入坑JAVA MyBatis入门 CURD 批量 联表分页查询
  • 排序:为什么插入排序比冒泡排序更受欢迎?
  • Pygame 游戏编程详解
  • 如何实现PHP的安全最大化
  • 经典面试题:Hashtable, HashMap, ConcurrentHashMap 之间的区别
  • 单细胞数据分析(三):单细胞聚类分析
  • 青少年编程与数学 02-002 Sql Server 数据库应用 19课题、数据库设计实例
  • 实时监控商品信息,加速迭代优化:助力商家产品持续精进之路
  • EPLAN软件损坏或系统问题可以这样修复
  • 空天地遥感数据识别与计算——建议收藏!
  • Pytorch可视化Visdom、tensorboardX和Torchvision
  • 第J8周:Inception v1算法实战与解析