Spring Data 教程 - Redis

时间:2020-06-19 00:04:00   收藏:0   阅读:53

1. Redis简介

Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的API。Redis 是一个高性能的key-value数据库。 redis的出现,在部分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。

Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。

redis的key都是字符串String类型,它的value是多样化的,如下图:

redis数据类型 ENCODING返回的编码 底层对应的数据结构
string int long类型的整数
string embstr embstr编码的简单动态字符串
string raw 简单动态字符串
list ziplist 压缩列表
list linkedlist 双向链表
hash ziplist 压缩列表
hash ht 字典
set intset 整数集合
set ht 字典
zset ziplist 压缩列表
zset skiplist 跳表

2. Redis的五种数据类型

2.1 字符串对象(String)

字符串对象的模型:

技术分享图片

redis底层提供了三种不同的数据结构实现字符串对象,根据不同的数据自动选择合适的数据结构。这里的字符串对象并不是指的纯粹的字符串,数字也是可以的。

2.2 列表对象(List)

列表对象的模型:

技术分享图片

redis中的列表对象经常被用作消息队列使用,底层采用ziplist和linkedlist实现。大家使用的时候当作链表使用就可以了。

2.3 哈希类型对象(Hash)

哈希类型对象的模型:

技术分享图片

redis的value类型hash类型,其实就是map类型,就是在值的位置放一个map类型的数据。大家想详细了解一下,可以参考一下这篇文章:https://www.jianshu.com/p/658365f0abfc

2.4 集合对象(Set)

集合对象类型的模型:

Set类型的value保证每个值都不重复。

技术分享图片

redis中的集合对象底层有两种实现方式,分别有整数集合和hashtable。当所有元素都是整数且元素数小于512(可在配置文件中set-max-intset-entries字段配置)时采用整数集合实现,其余情况都采用hashtable实现。hashtable请移驾上文链接查阅,接下来介绍整数集合intset。intset有三个属性,encoding:记录数字的类型,有int16,int32和int64等,length:记录集合的长度,content:存储具体数据。具体结构如下图:

技术分享图片

2.5 有序集合对象

有序集合对象(zset)和集合对象(set)没有很大区别,仅仅是多了一个分数(score)用来排序。

redis中的有序集合底层采用ziplist和skiplist跳表实现,当所有字符串长度都小于设定值值64字节(可以在配置文件中修改list-max-ziplist-value字段改变),并且所存元素数量小于设定值512个(可以在配置文件中修改list-max-ziplist-entries字段改变)使用ziplist实现,其他情况均使用skiplist实现,跳跃表的实现原理这里偷个懒,给大家推荐一篇写的非常好的博客,点击查看跳跃表原理

3. Redis的安装

可以去官网或者中文网下载Redis。redis的windows版本现在已经不更新了,所以我们安装redis的6.0.3版本,这个版本支持的东西很多,在此次教程中,我们只对redis的五种数据类型做解释和学习。

官网:https://redis.io/

中文网:https://www.redis.net.cn/

本教程安装的redis版本为6.0.3版本,redis使用C语言编写的,CentOS7的gcc自带版本为4.8.5,而redis6.0+需要的gcc版本为5.3及以上,所以需要升级gcc版本。

下载Linux版本的tar.gz包,解压以后进入解压产生的包:

cd redis-6.0.3

发现没有bin目录,这里需要通过make进行安装。

# 先检查gcc的环境 
gcc -v 
# 查看gcc版本 
yum -y install centos-release-scl 
# 升级到9.1版本 
yum -y install devtoolset-9-gcc devtoolset-9-gcc- c++ devtoolset-9-binutils 

scl enable devtoolset-9 bash 
#以上为临时启用,如果要长期使用gcc 9.1的话: 
echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile 
# 进入redis解压文件 
make 
# 6.0的坑,gcc版本 9.0 以上
# 等待完毕

执行完make操作之后,就可以在redis目录看到src目录了。进入src目录后就可以看到redis-serverredis-cli

这里建议将Redis的配置文件复制,保留一份原生的配置文件。

redis的配置大家可以在网上搜一下常用的配置,在这里给大家推荐一个常用的配置,比较详细:

https://blog.csdn.net/ymrfzr/article/details/51362125

到这里redis就可以启动并且正常访问了。

注意:一定要将redis的IP地址绑定注释掉,允许所有的IP地址访问,不然我们从Windows访问就访问不了。

注释掉下面的这一行:
技术分享图片

同时关闭Redis的服务保护模式,将protected-mode设置为no。如下:
技术分享图片

4. Spring Boot 整合 Redis

5. 项目地址

本项目传送门:

此教程会一直更新下去,觉得博主写的可以的话,关注一下,也可以更方便下次来学习。


原文:https://www.cnblogs.com/Butterfly-Tri/p/13160779.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!