目录
redis是什么,他的应用场景是什么?
Redis的一些主要特点和应用场景:
redis的官方网站:Redis
redis是键值型数据库:(也就是key-value模式)(跟python的字典很像)
认识NoSQL
SQL和NoSQL的区别
数据库结构之间的区别
数据库关联之间的区别
SQL查询和非SQL查询的区别
事务上的差异
总结
认识Redis
特征:
一、安装Redis
1、单机安装Redis(linux安装 -- Centos7.9)
1.1、安装Redis依赖(Redis是基于C语言编译的,因此首先需要安装Redis所需的gcc依赖)
1.2、将下载好的redis安装包上传到/usr/local/src目录下
1.3、解压redis安装包
1.4、进入redis包,并运行编译
1.5、redis默认的安装目录是/usr/local/bin目录下:
1.6、启动redis(可以在任意目录输入redis-server命令即可启动Redis)
1.7、指定配置启动redis(后台启动)
二、Redis客户端
Redis客户端包括:
Redis命令行客户端( redis-cli )
参考视频:黑马程序员Redis入门到实战教程,深度透析redis底层原理+redis分布式锁+企业解决方案+黑马点评实战项目
Redis(Remote Dictionary Server)是一种开源的内存数据库,通常被称为数据结构服务器。它被设计用于提供高性能、高可用性和低延迟的数据存储和检索,特别适用于许多不同类型的应用场景。
内存存储: Redis 将数据存储在内存中,因此具有非常快的读写速度。这使得它非常适合用作缓存服务器,可以显著减轻数据库的负载。
键值存储: Redis 是一个键值存储系统,其中每个键都与一个值相关联。这种模型非常适合存储简单的数据结构,如字符串、列表、哈希表、集合等。
发布/订阅系统: Redis 支持发布/订阅模式,允许客户端订阅特定的频道并接收实时消息。这在构建实时通信和事件驱动应用程序时非常有用。
计数器和排行榜: Redis 的原子性操作使其成为构建计数器和排行榜的理想选择。您可以轻松地对计数器进行递增/递减操作,并使用有序集合构建排行榜。
会话存储: Redis 可用于存储会话数据,特别是在负载平衡的 Web 应用程序中,可以在各个应用服务器之间共享用户会话信息。
地理位置: Redis 的地理位置功能(GeoSpatial)使其能够存储和查询地理位置数据,这对于构建位置相关的应用非常有用,如地图和定位服务。
消息队列: Redis 的列表结构和发布/订阅模式使其成为一个轻量级的消息队列系统,可用于任务调度和异步处理。
缓存:Redis 常用作缓存层,可以将经常访问的数据存储在内存中,以减少对数据库或其他后端存储的访问,提高应用程序性能。
分布式锁: Redis 可以用于实现分布式锁,确保在分布式系统中的多个节点之间同步访问共享资源。
实时分析: Redis 的数据结构和查询能力可用于实时数据分析和统计。
总之,Redis 是一种多功能的数据存储系统,适用于多种应用场景,包括缓存、实时通信、计数器、排行榜、会话管理、地理位置服务、消息队列等。其高性能和低延迟使其成为许多应用程序的理想选择。然而,需要注意的是,Redis 是一个内存数据库,因此存储的数据通常应该是可以在内存中容纳的。
redis的是Nosql数据库
SQL是关系型数据库
NoSQL是非关系型数据库
sql数据库之间存储的数据之间存在相连接的关系,当你像删除这个表的时候,如果存在关系,就不能删除(可以节省数据存储的空间)
在Nosql中,通常使用json的格式(文档嵌套)来确定关联的,而数据库本身不会帮助你对关系进行维护,需要程序员自己进行逻辑梳理(缺点:数据容易出现重复,导致浪费空间)
SQL数据库会满足事务的四大特性(A.C.I.D) (原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、隔离性(Isolation))
NoSQL数据库无法全部满足事务的四大特性(要么不存在事务,需要根据不同的数据库而定),因此可以叫做满足基本的事务(BASE)
[root@localhost ~]# yum install gcc tcl -y
下载网站:Download | Redis
[root@localhost ~]# cd /usr/local/src/
[root@localhost src]# ls
redis-6.2.13.tar.gz
[root@localhost src]# tar -zxvf redis-6.2.13.tar.gz
[root@localhost src]# ls
redis-6.2.13 redis-6.2.13.tar.gz
[root@localhost src]# cd redis-6.2.13
[root@localhost redis-6.2.13]# make && make install
[root@localhost redis-6.2.13]# ls /usr/local/bin/
redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-sentinel redis-server
[root@localhost redis-6.2.13]#
redis-cli:是redis提供的命令行客户端
redis-server:是redis的服务端启动脚本
redis-sentinel:是redis的哨兵启动脚本
这种启动属于前台启动,会阻塞整个会话窗口,窗口关闭或者按下Crtl+C则Redis停止,不推荐使用。
如果要让redis以后台的方式启动,必须修改redis的配置文件,就在redis安装包的目录下,名字叫redis.conf :
我们先将这个文件备份一份
[root@localhost redis-6.2.13]# cp redis.conf redis.conf.bck
[root@localhost redis-6.2.13]# ls
00-RELEASENOTES CONDUCT COPYING dump.rdb Makefile README.md redis.conf.bck runtest-cluster runtest-sentinel src TLS.md
BUGS CONTRIBUTING deps INSTALL MANIFESTO redis.conf runtest runtest-moduleapi sentinel.conf tests utils
修改redis备份文件
# 监听的地址默认是127.0.0.1(本地地址),会导致只能在本地访问,修改为0.0.0.0则可以任意地址访问,生产环境不要设置为0.0.0.0
bind 0.0.0.0
# 守护进程,修改为yes后即可后台运行
daemonize yes
# 密码,设置后访问Redis必须输入密码
requirepass 123456
# 日志文件,默认为空,不记录日志,可以指定日志文件名
logfile “redis.log”
Redis的其他常用配置
# 监听的端口
port 6379
# 工作目录,默认是当前目录,也就是运行redis-server时的命令,日志、持久化等文件会保存在这个目录
dir .
# 数据库数量,设置为1,代表只使用1个库,默认有16个库,编号0-15
databases 1
# 设置redis的能够使用的最大内存
maxmemory 512mb
重新启动redis,查看效果
[root@localhost redis-6.2.13]# vim redis.conf
[root@localhost redis-6.2.13]# redis-server redis.conf
[root@localhost redis-6.2.13]# ps aux|grep redis
root 16486 0.0 0.0 162520 11956 ? Ssl 14:38 0:00 redis-server 0.0.0.0:6379
root 16492 0.0 0.0 112812 980 pts/1 S+ 14:38 0:00 grep --color=auto redis
[root@localhost redis-6.2.13]#
1.8、实现redis开机自启(配置redis服务)
[root@localhost redis-6.2.13]# vim /etc/systemd/system/redis.service
[root@localhost redis-6.2.13]# cat /etc/systemd/system/redis.service
[Unit]
Description=redis-server
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/bin/redis-server /usr/local/src/redis-6.2.13/redis.conf
PrivateTmp=true
[Install]
WantedBy=multi-user.target
[root@localhost redis-6.2.13]#
重载系统服务:
[root@localhost redis-6.2.13]# systemctl daemon-reload
重启redis
[root@localhost redis-6.2.13]# systemctl restart redis
查看redis状态
[root@localhost redis-6.2.13]# systemctl status redis
● redis.service - redis-server
Loaded: loaded (/etc/systemd/system/redis.service; disabled; vendor preset: disabled)
Active: inactive (dead)
Sep 04 14:49:35 localhost.localdomain systemd[1]: Starting redis-server...
Sep 04 14:49:35 localhost.localdomain systemd[1]: Started redis-server.
[root@localhost redis-6.2.13]#
实现开机自启
[root@localhost redis-6.2.13]# systemctl enable redis
Created symlink from /etc/systemd/system/multi-user.target.wants/redis.service to /etc/systemd/system/redis.service.
[root@localhost redis-6.2.13]#
命令行客户端:
redis-cli(命令行客户端): Redis 自带了一个命令行客户端
redis-cli
,它可以在终端中与 Redis 服务器进行交互。只需打开终端并运行redis-cli
命令,即可开始执行 Redis 命令。例如:redis-cli
这将打开 Redis 命令行客户端,允许您与本地或远程 Redis 服务器进行交互。
图形化桌面客户端:
Redis Desktop Manager: 这是一个可视化的 Redis 客户端工具,提供了图形界面,使您能够轻松管理 Redis 数据库、执行命令和查看数据。
编程语言客户端:
Redis Desktop Manager: 这是一个可视化的 Redis 客户端工具,提供了图形界面,使您能够轻松管理 Redis 数据库、执行命令和查看数据。
import redis # 连接到本地 Redis 服务器 r = redis.Redis(host='localhost', port=6379, db=0) # 执行 Redis 命令 r.set('mykey', 'myvalue')
其他语言的 Redis 客户端库: Redis 有许多不同语言的客户端库,如 Java、Ruby、Go、PHP 等。您可以根据您的编程语言选择适合的客户端库来连接和操作 Redis 服务器。
[root@localhost redis-6.2.13]# cd /usr/local/bin/
[root@localhost bin]# ls
redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-sentinel redis-server
使用方法
redis-cli [options][commonds]
常见的option选项有:
-h 127.0.0.1:指定要连接的redis节点的IP地址,默认是127.0.0.1
-p 6380:指定要连接的redis节点的端口,默认是6379
-a 123456:指定redis的访问密码
其中commonds就是Redis的操作命令,如:
ping:与redis服务器做心跳测试,服务器正常会返回pong
不指定commonds时,会进入redis-cli的交互控制台:
[root@localhost bin]# redis-cli -h 192.168.1.209 -p 6379 -a 123456
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.1.209:6379> ping
PONG
192.168.1.209:6379>
或者是:
[root@localhost bin]# redis-cli -h 192.168.1.209 -p 6379
192.168.1.209:6379> ping
(error) NOAUTH Authentication required.
192.168.1.209:6379> AUTH 123456
OK
192.168.1.209:6379> ping
PONG
192.168.1.209:6379>