Redis是一个开源的、高性能的键值存储系统,支持多种数据结构,包括字符串、哈希表、列表、集合、有序集合。它采用C语言编写,主要特点是速度快、使用简单、可靠性高、支持数据持久化、支持主从复制等功能。
Redis 是完全开源免费的,遵守BSD协议,高性能的基于键值对(key–value)的NoSQL(Not Only SQL)数据库。
Redis被广泛应用于缓存、队列、数据存储和消息传递等场景,是当前最受欢迎的NoSQL数据存储之一。
关系型数据库的特点
- 存储结构化数据:多行多列的表结构数据。
- 强事务:支持完整的ACID事务特性。
- 在磁盘中存储数据:可通过索引加速检索。
- 数据量到达一定量级,查询性能就会出现瓶颈:根据表字段不同,在百万或者千万级时会遇到。
- 支持SQL:大部分的SQL语句都可以跨越数据库。
- 原生不支持分布式:需要借助第3方中间件分库分表,以应对海量存储需求。
Redis的特点
- 存储非结构化的数据:k–v方式存储数据。
- 弱事务:支持事务的部分特性。
- 在内存中存储数据,但能同时持久化数据到磁盘。
- 查询性能非常好,但不支持连接查询。
- 不支持SQL,需要使用特定的命令。
- 天然支持集群、数据分片,扩展容易。
Redis就是一个在内存中,存储k–v格式数据,支持自动持久化的NoSQL型数据库。
Redis开发中的应用
典型应用:
- 在一定程度上代替关系型数据库,保存需要持久化,但对事务要求不高的数据:购物车
- 充当应用中的缓存,Redis查询性能非常好,可支持的并发远高于关系型数据库。可以优先从Redis中查询数据,缓存为命中后,再从数据库中查询并缓存数据到Redis中,以提升程序性能。
- Redis提供了丰富的数据类型,可以解决关系型数据库不方便解决的问题,比如:排行榜(热度、时间等维度)、计数器(播放量、浏览数)、社交网络(赞踩、粉丝、共同好友)
- 解决分布式系统带来的新问题,比如对tomcat集群的session进行统一的存储管理。
说明:Redis并不是万金油,有很多适合它解决的问题,但是也有很多不合适它解决的问题。
- 从数据规模的角度上看,数据可以分为大规模数据小规模数据,Redis的数据是存放在内存中的,虽然现在内存已经足够便宜,但是如果数据量非常大,例如每天有几亿的用户行为数据,使用Redis来存储的话,基本上是个无底洞,经济成本相当的高。
- 从数据冷热的角度上看,数据分为热数据和冷数据。热数据通常是指需要频繁操作的数据,反之为冷数据。如果将这些冷数据放在Redis中,基本上是对于内存的一种浪费,但是对于一些热数据可以放在Redis中加速读写,也可以减轻后端存储的负载,可以说是事半功倍。
接下来就是重点了,Redis要如何安装以及打开它并运行使用呢
Redis的安装使用
-
上传
redis-5.x.x.tar.gz
到linux虚拟机的/opt
文件夹
下载链接:链接:https://pan.baidu.com/s/1DbDvG0RTdbU7NigSPipOjg
提取码:b8p5
[root@localhost ~]# yum install -y gcc
[root@localhost opt]# tar xzvf redis-5.0.10.tar.gz
[root@localhost opt]# cd redis-5.0.10
[root@localhost redis-5.0.10]# make
[root@localhost redis-5.0.10]# make install
(进行到这里就安装完毕了Redis可以直接跳到第6步运行了)
5. 将 redis-5.x.x/redis.conf
复制到 /etc/redis/
目录下(可以省略)
[root@localhost redis-5.0.10]# mkdir -p /etc/redis/
[root@localhost redis-5.0.10]# cp redis.conf /etc/redis/
[root@localhost redis-5.0.10]# redis-server /etc/redis/redis.conf
6255:M 08 Jun 00:19:28.368 * Increased maximum number of open files to 10032 (it was originally set to 1024).
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 5.0.10 (00000000/0) 64 bit
.-`` .-```. ```/ _.,_ ''-._
( ' , .-` | `, ) Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 6379
| `-._ `._ / _.-' | PID: 6255
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
说明:redis默认监听端口6379。(如果直接输入redis-server
,那么默认会读取安装路径下的那个redis.conf配置文件)
Redis的命令行客户端
Redis自带了一个命令行的客户端:redis-cli。下面我们介绍如何使用redis-cli连接、操作Redis服务。
# redis-cli -h 主机ip -p 端口号 -h和-p都可以省略,默认后默认为127.0.0.1和6379
[root@localhost ~]# redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379>
# 键入各种redis命令, 比如keys * 查询redis中所有的key
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> shutdown
not connected>
not connected> exit
[root@localhost ~]#
说明:可以通过redis-cli -h 主机ip -p 端口号 命令
的方式,直接执行单个命令。
Redis重大版本
- Redis2.6(2012):服务端支持lua脚本;键的过期时间支持毫秒。
- Redis2.8(2013):增加了增量主从复制功能,提高了主从复制性能;Redis Sentinel第二版,相较于2.6版本,次版本已经生产可用。
- Redis3.0(2015):增加了Redis Cluster,这是官方的分布式实现。
- Redis3.2(2016):添加了GEO相关功能;从节点读取过期数据保持一致;数据持久化方面更换了新的RDB格式,但是仍然兼容旧的格式。
- Redis4.0(2017):提供了module功能,方便第三方开发者扩展redis功能;提供了非阻塞del和flushall/flushdb功能,有效解决删除bigkey可能造成的Redis阻塞;提供了RDB-AOF混合持久化格式,充分利用了AOF和RDB各自优势。
- Redis5.0(2018):新的流数据类型(Stream DataType);RDB新增LFU和LRU信息;集群管理器从Ruby(redis-trib.rb)移植到了redis-cli中的C语言代码。
- Redis6.0(2020):引入多线程IO,但执行命令仍是单线程;提供了Redis集群代理功能;改进了PSYNC2的复制协议;推出了更新的RESP3(Redis Serialization Protocol)即Redis 服务端与客户端之间通信的协议第3版;加强了对集群的支持,包括更好的负载均衡和更快的故障转移。
Redis借鉴了Linux操作系统对于版本号的命名规则:版本号第二位如果是奇数,则为非稳定版本(例如2.7、2.9、3.1),如果是偶数,则为稳定版本(例如2.6、2.8、3.0、3.2)。当前奇数版本就是下一个稳定版本的开发版本,例如2.9版本是3.0版本的开发版本。所以我们在生产环境通常选取偶数版本的Redis,如果对于某些新的特性想提前了解和使用,可以选择最新的奇数版本。
原文地址:https://blog.csdn.net/weixin_52198548/article/details/134792645
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_42738.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!