Redis基础

1.什么叫关系型与非关系型数据库

关系型数据库:

​ 关系型数据是一个结构化的数据结构,创建在关系模型(二维表)的基础上

​ 代表:Orical 、Mysql 、SQL Server、Microsoft Access、DB2

非关系型数据库:

​ NOSQL,意思是不仅仅是sql,是除了主流关系型数据库之外都是非关系型数据库,包括什么img什么MP4之类的不是结构化的数据

​ 代表: Redis、MongBD、Hbase、CouhDB

2.关系数据库与分关系型数据的区别

​ (1)数据存储方式不同

​ 关系型数据是表格式的,相互关联彼此协助,容易提取数据

​ 非关系以键值对或者图结构存储,不容易提取数据

​ (2)扩展方式不同

​ SQL数据库扩展主要是纵向扩展,也就是提高服务器处理能力,使用更高的配置,这样处理相同的数据集就更快了。因为数据存储在关系表中,操作的性能瓶颈可能涉及很多个表,这都需要通过提高计算机性能来客服。虽然SQL数据库有很大扩展空间,但最终肯定会达到纵向扩展的上限。

​ NoSQL数据库得益于非关系型存储是分布式的缘故,NoSQL可以通过扩展资源池,给其添加更多的节点来分担负载

​ (3)对事务的支持性不同

​ 如果数据操作需要高事务性或者复杂数据查询需要控制执行计划,那么传统的SQL数据库从性能和稳定性方面考虑是你的最佳选择。SQL数据库支持对事务原子性细粒度控制,并且易于回滚事务。

​ 虽然NoSQL数据库也可以使用事务操作,但稳定性方面没法和关系型数据库比较,所以它们真正闪亮的价值是在操作的扩展性和大数据量处理方面。

3.什么是Redis

Redis 是一个开源的、使用 C 语言编写的 NoSQL 数据库。

Redis 基于内存运行并支持持久化,采用key-value(键值对)的存储形式,是目前分布式架构中不可或缺的一环。

Redis服务器程序是单进程模型,也就是在一台服务器上可以同时启动多个Redis进程,Redis的实际处理速度则是完全依靠于主进程的执行效率。若在服务器上只运行一个Redis进程,当多个客户端同时访问时,服务器的处理能力是会有一定程度的下降;若在同一台服务器上开启多个Redis进程,Redis在提高并发处理能力的同时会给服务器的CPU造成很大压力。即:在实际生产环境中,需要根据实际的需求来决定开启多少个Redis进程。若对高并发要求更高一些,可能会考虑在同一台服务器上开启多个进程。若 CPU 资源比较紧张,采用单进程即可。

4.Redis安装

systemctl stop firewalld
setenforce 0
 
yum install -y gcc gcc-c++ make
 
tar zxvf redis-5.0.7.tar.gz -C /opt/
 
cd /opt/redis-5.0.7/
make
make PREFIX=/usr/local/redis install



cd /opt/redis-5.0.7/utils
./install_server.sh
……
慢慢回车
Please select the redis executable path []
手动输入
/usr/local/redis/bin/redis-server

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5Yqdo7ZT-1663499465765)(C:/Users/mogu/AppData/Roaming/Typora/typora-user-images/image-20220818184031753.png)]

Selected config:
Port           : 6379               #默认侦听端口为6379
Config file    : /etc/redis/6379.conf       #配置文件路径
Log file       : /var/log/redis_6379.log      #日志文件路径
Data dir       : /var/lib/redis/6379        #数据文件路径
Executable     : /usr/local/redis/bin/redis-server  #可执行文件路径
Cli Executable : /usr/local/bin/redis-cli     #客户端命令工具

软链接将redis加入环境变量中

ln -s /usr/local/redis/bin/* /usr/local/bin/
 
/etc/init.d/redis_6379 stop       #停止
/etc/init.d/redis_6379 start      #启动
/etc/init.d/redis_6379 restart      #重启
/etc/init.d/redis_6379 status     #状态

修改/etc/init.d/redis_6379

vim /etc/redis/6379.conf
 
70行,添加 监听的主机地址
bind 127.0.0.1 192.168.223.10       
 
93行,Redis默认的监听端口
port 6379                 
 
137行,启用守护进程
daemonize yes             
 
159行,指定 PID 文件
pidfile /var/run/redis_6379.pid       
 
167行,日志级别
loglevel notice               
 
172行,指定日志文件
logfile /var/log/redis_6379.log       
 
 
 
 
 
 ######重启服务#######
/etc/init.d/redis_6379 restart

5.Redis命令工具

redis-server    用于启动 Redis 的工具
redis-benchmark   用于检测 Redis 在本机的运行效率
redis-check-aof   修复 AOF 持久化文件
redis-check-rdb   修复 RDB 持久化文件
redis-cli     Redis命令行工具

6.redis-cli命令行工具

语法:redis-cli -h host -p port -a password
-h:指定远程主机
-p:指定Redis服务的端口号
-a:指定密码,当然如果没有设置密码可以直接省略
 redis-cli -h 192.168.226.123 -p 6379

7.redis-benchmark测试工具

redis-benchmark 是官方自带的 Redis 性能测试工具,可以有效的测试 Redis 服务的性能。

基本的测试语法:redis-benchmark [选项] [选项值]。

-h	指定服务器主机名。
-p	指定服务器端口。
-s	指定服务器 socket
-c	指定并发连接数。
-n	指定请求数。
-d	以字节的形式指定 SET/GET 值的数据大小。
-k	1=keep alive 0=reconnect 。
-r	SET/GET/INCR 使用随机 key, SADD 使用随机值。
-P	通过管道传输请求。
-q 	强制退出 redis。仅显示 query/sec 值。
-csv	以 CSV 格式输出。
-l	生成循环,永久执行测试。
-t	仅运行以逗号分隔的测试命令列表。
-I	Idle 模式。仅打开 N 个 idle 连接并等待。

我们测试下我们的redis的链接和请求

redis-benchmark -h 192.168.226.123 -p 6379 -c 100 -n 10000

8.Redis 数据库常用命令

set		存放数据	set key value
get		获取数据	get key
keys	命令可以取符合规则的键值列表,通常情况可以结合*、?等选项来使用
exists	命令可以判断键值是否存在(0为无而1为有)
del		命令可以删除当前数据库的指定 key。
type	命令可以获取 key 对应的 value 值类型。
rename	对以有键进行重命名(如果有这个键会覆盖)
renamenx 命令的作用是对已有 key 进行重命名,并检测新名是否存在,如果目标 key 存在则不进行重命名。(不覆盖)
dbsize 命令的作用是查看当前数据库中 key 的数目。
使用config set requirepass xxxxx  (password)命令设置密码
使用config get requirepass命令查看密码(一旦设置密码,必须先验证通过密码,否则所有操作不可用)
set k1 "周妍" 	#如果你想要插入中文的话redis-cli --raw -h 192.168.226.123 -p 6379登录时要加raw
get k1			 #获取k1这个键的值 
192.168.226.123:6379> get k1
周妍

keys *			 #查看所有的键
192.168.226.123:6379> keys *
key:__rand_int__
test
counter:__rand_int__
myset:__rand_int__
test2
k2
mylist
k1

keys  k?	    #查看k为开头一个字符的键名
192.168.226.123:6379> keys  k?
k2
k1

del k2			#删除k2
192.168.226.123:6379> del k2
1

rename test2 k1	#将test2键重命名为k1
192.168.226.123:6379> rename test2 k1
OK

renamenx test2 k1	#将test2键重命名为k1
192.168.226.123:6379> renamenx test2 k1
OK

config set requirepass  123	#对set命令进行密码设置要重写
192.168.226.123:6379> config set requirepass  123
OK
192.168.226.123:6379> set kkk
ERR wrong number of arguments for 'set' command
192.168.226.123:6379> auth 123	#输入密码后就可以使用了
OK
192.168.226.123:6379> set kkk 2123
OK

Redis 支持多数据库,Redis 默认情况下包含 16 个数据库,数据库名称是用数字 0-15 来依次命名的。

select 10	切换到10这个库
192.168.226.123:6379> select 10
OK
192.168.226.123:6379[10]> keys *
(empty list or set)

将0库的键唯一到1库

move 键名 k
192.168.226.123:6379> move k2 1
(integer) 1

库,数据库名称是用数字 0-15 来依次命名的。

select 10	切换到10这个库
192.168.226.123:6379> select 10
OK
192.168.226.123:6379[10]> keys *
(empty list or set)

将0库的键唯一到1库

move 键名 k
192.168.226.123:6379> move k2 1
(integer) 1
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐