Redis篇(持续更新)一

本文介绍了Redis这款单线程、内存存储的NoSql数据库,强调其Key-Value存储结构和五种主要数据类型(String、List、Set、Hash、Zset)的应用。Redis在Java后端开发中的CRUD优化作用被提及,尤其是对于减少数据库IO和提高程序运行效率。
摘要由CSDN通过智能技术生成

内容仅供个人学习所用,如有错误,多多包涵

一、基本介绍

Redis是一款C语言编写的经典的NoSql数据库,即非关系型数据库,支持单线程,Redis以Key-Value的存储方式,Value支持多种数据结构(String、List、Set、Hash、Zset),Redis为了保证效率,会将数据存储在内存中,与memcached不同的是,Redis会周期性地把更新的数据写入磁盘。

(我的理解:在Java后端开发中,对数据库进行CRUD时,redis可以存储一部分数据,而且这部分数据的查询时间很短,从而减少了一部分数据库IO,优化了程序的运行时间。)

二、数据类型

1、String字符串

Redis最基本的数据类型,底层原理是动态字符串,当需要存储的数据长度大于字符串分配的存储空间时,字符串就需要进行扩容,当字符串的大小小于1M时,扩容时加倍现有的存储空间,当字符串大小大于1M时,扩容时每次增加1M的存储空间,但最长不超过512M。

2、List列表

底层原理是双向链表,当List中元素个数较少时,会以ziplist的结构存储(储存空间连续),当元素个数增多时,会用多个ziplist进行存储,每个ziplist构成一个双向链表。

3、set集合

与List类似,不同的是Set会自动对数据进行去重,当需要存储一个列表数据,又不希望数据出现重复时,可以选择Set,Java中的HashSet底层是HashMap,Redis中的Set与其类似,底层原理是Value值为null的Hash表。

4、Hash哈希

底层原理是hash表,在存储对象时常用,存储模型如下图,当field-value个数较少且长度较短时,采用ziplist的存储结构,否则使用hashtable。

5、Zset有序集合

与set类似,同样会对数据进行自动去重,特殊的是,Zset会对每个成员设置一个score值,可以根据score值对数据进行排序,底层原理是hash+跳表,hash的作用是将元素和权重score关联起来,保证唯一对应,通过元素可以找到其对应的score,跳表的作用是将权重值score排序,根据score的范围获取元素列表。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值