一.Redis概念
1.先说概念,Redis是什么?
Redis 是一个高性能的 开源的、C语言写的Nosql(非关系型数据库),数据保存可以存储在内存中或者磁盘中。Redis 是以key-value形式存储,和传统的关系型数据库不一样。不一定遵循传统数据库的一些基本要求,比如说,不遵循sql标准,事务,表结构等等,redis严格上不是一种数据库,应该是一种数据结构化存储方法的集合。
2.那什么是Nosql呢(NoSQL Databases List by Hosting Data - Updated 2022 )
NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,它泛指非关系型的数据库。随着互联网2003年之后web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的交友类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。
3.NOSQL分类
分类 | Examples举例 | 典型应用场景 | 数据模型 | 优点 | 缺点 |
---|---|---|---|---|---|
键值(key-value) | Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB | 内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等等。 | Key 指向 Value 的键值对,通常用hash table来实现 | 查找速度快 | 数据无结构化,通常只被当作字符串或者二进制数据 |
列存储数据库 | Cassandra, HBase, Riak | 分布式的文件系统 | 以列簇式存储,将同一列数据存在一起 | 查找速度快,可扩展性强,更容易进行分布式扩展 | 功能相对局限 |
文档型数据库 | CouchDB, MongoDb | Web应用(与Key-Value类似,Value是结构化的,不同的是数据库能够了解Value的内容) | Key-Value对应的键值对,Value为结构化数据 | 数据结构要求不严格,表结构可变,不需要像关系型数据库一样需要预先定义表结构 | 查询性能不高,而且缺乏统一的查询语法。 |
图形(Graph)数据库 | Neo4J, InfoGrid, Infinite Graph | 社交网络,推荐系统等。专注于构建关系图谱 | 图结构 | 利用图结构相关算法。比如最短路径寻址,N度关系查找等 | 很多时候需要对整个图做计算才能得出需要的信息,而且这种结构不太好做分布式的集群 |
二.Redis的特点
Redis的特点就一个字:简单好用还很快!
数据保存在内存,存取速度快,并发能力强,在Redis6之后支持多线程。
它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、 zset(sorted set --有序集合)和hash(哈希类型)。
redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库(如MySQL)起到很好的补充作用。
提供了多语言客户端(Java,C/C++,C#,PHP,JavaScript等)。
Redis支持集群(主从同步)。数据可以主服务器向任意数量从的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。
支持持久化,可以将数据保存在硬盘的文件中
支持订阅/发布(subscribe/publish)
支持事务
三.Redis和Mysql的比较
众所周知,Mysql有很多种引擎,我们只拿Innodb来进行比较,如果想了解其他Mysql引擎的朋友可以私信我。
mysql | redis | |
---|---|---|
类型 | 关系型 | 非关系型 |
存储位置 | 磁盘 | 磁盘和内存 |
存储过期 | 不支持 | 支持 |
读写性能 | 低 | 非常高 |
四.Redis的使用场景
缓存:作为经常被查询数据,放到读速度很快的空间(比如内存),以便下次访问减少访问磁盘次数,减轻数据库压力,从而降低访问时间。就比如:Mybatis的 二级缓存 , Ehcache框架缓存等情况。
计数器:网站通常需要统计注册用户数,网站总浏览次数等等 ,新浪微博转发数、点赞数。
实时防攻击系统:防止暴力破解,如使用工具不间断尝试各种密码进行登录。解决方案使用Redis记录某ip一秒访问到达10次以后自动锁定IP,30分钟后解锁
设定有效期的应用:设定一个数据到一定的时间失效。比如像验证码,登录信息超时失效, 自动解锁,购物券,红包等。
自动去重应用:Uniq 操作,获取某段时间所有数据去重值,这个使用 Redis 的 set 数据结构最合适了,只需要不断地将数据往 set 中扔就行了,set会自动去重。
队列:构建队列系统,使用 list 可以构建队列系统,使用 sorted set 可以构建有优先级的队列系统。
- 秒杀:通过基于Redis的内存队列及Redis的信号量隔离来实现资源隔离,通过内存处理高并发访问,来防止库存超卖问题。
消息订阅系统:Pub/Sub 构建实时消息系统 Redis 的 Pub/Sub 系统可以构建实时的消息系统,比如很多用 Pub/Sub 构建的实时聊天系统的例子。如QQ群。
五.Redis的安装
1.下载和安装
1.1下载Redis
Redis本身不支持windows,但是这么厉害的东西用不了肯定不合适,早就有前辈帮我们解决了这个问题,大家可以自行查找合适的资源
我目前用的版本为Redis5,如果有需要的兄弟们可以留邮箱
windows环境版本下载地址:Releases · microsoftarchive/redis · GitHub
1.2.安装Redis
window版本解压Redis包即可用
linux版本先关防火墙再安装C环境点点点不介绍了
1.3.Redis目录介绍
redis.window.conf #reids配置文件 redis-benchmark.exe #reids压测工具 redis-check-aof.exe #aof文件校验、修复功能 redis-check-dump.exe #rdb文件校验、修复功能 redis-cli.exe #命令行客户端,连接Redis服务端可对Redis进行相关操作 redis-server.exe #Redis服务器,启动Redis
2.Redis启动和测试
2.1.启动redis-server
进入到Redis安装目录 ,双击可以启动或者使用CMD执行
以上就是启动成功
2.2.启动redis-client
-
连接本机Redis直接双击 redis-cli.exe 或者执行命令
redis-cli.exe
-
如果连接其他服务的Redis需要跟上 -h参数
redis-cli.exe -h ip -p 端口 #如 redis-client.exe -h 192.168.0.11 -p 6379
2.3.测试Redis
在redis-cli中操作
set key value #设置数据
get key #获取数据
六.Redis设置密码
1.设置密码
1.1.临时修改
-
CONFIG SET 命令可以动态地调整 Redis 服务器的配置而无须重启,重启后失效
CONFIG SET requirepass 123456
1.2.永久修改
-
修改配置文件 redis.widows.conf ,增加代码:
requirepass 123456
2.登录Redis
2.1.Auth认证
-
启动redis-cli.exe ,执行auth命令:
auth 123456
至此,我们Redis算是安装完成,下面几期会跟大家聊聊安装Redis可视化工具和如何操作Redis的各种数据类型,事务,发布订阅,持久化策略和淘汰策略的操作,以及我们的代码中该如何操作Redis。还望各位看官点个赞再走吧,给您劈个叉~