文章目录
一、redis简介
Redis 是一个开源的、使用 C 语言编写的 NoSQL 数据库。
Redis 基于内存运行并支持持久化,采用key-value(键值对)的存储形式,是目前分布式架构中不可或缺的一环。
1 redis的运作模式
1 Redis服务器程序是单进程模型,也就是在一台服务器上可以同时启动多个Redis进程,Redis的实际处理速度则是完全依靠于主进程的执行效率。
2 若在服务器上只运行一个Redis进程,当多个客户端同时访问时,服务器的处理能力是会有一定程度的下降
3若在同一台服务器上开启多个Redis进程,Redis在提高并发处理能力的同时会给服务器的CPU造成很大压力。
4 在实际生产环境中,需要根据实际的需求来决定开启多少个Redis进程。若对高并发要求更高一些,可能会考虑在同一台服务器上开启多个进程。若 CPU 资源比较紧张,采用单进程即可。
2 redis的特性
具有极高的数据读写速度:数据读取的速度最高可达到 110000 次/s,数据写入速度最高可达到 81000 次/s。
支持丰富的数据类型:支持 key-value、Strings、Lists、Hashes、Sets 及 Ordered Sets 等数据类型操作。
string :字符串(可以为整型、浮点型和字符串,通称为元素)
list :列表(实现队列,元素不唯一,先入先出原则)
set :集合(各不相同的元素)
hash :hash散列值(hash的key必须是唯一的)
set /ordered set :集合/有序集合
支持数据的持久化:可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
原子性:Redis 所有操作都是原子性的。
支持数据备份:即 master-salve 模式的数据备份
3 redis的应用场景
在现有的分布式架构中 redis最大的作用为加速后端的数据库 成为高速缓存使用,满足高并发的要求 包括获取最新N个数据的操作、排行榜类应用、计数器应用、存储关系、实时分析系统、日志记录。
二、部署redis数据库
systemctl stop firewalld.service
setenforce 0 关闭防火墙
yum install -y gcc gcc-c++ make 安装编译环境
cd /opt
tar zxvf redis-5.0.7.tar.gz 解压文件
cd /opt/redis-5.0.7/
make && make PREFIX=/usr/local/redis install Redis源码包中直接提供了makefile文件 直接执行make与make install命令进行安装
cd /opt/redis-5.0.7/utils/
./install_server.sh 修改配置
ln -s /usr/local/redis/bin/* /usr/local/bin/ 创建软连接
/etc/init.d/redis_6379 start 开启服务
netstat -natp | grep 6379 查看端口服务是否起得来
redis的自带的命令工具
redis-server 用于启动 Redis 的工具
redis-cli #Redis命令行工具
redis-benchmark #用于检测 Redis 在本机的运行效率
redis-check-aof #修复 AOF 持久化文件
redis-check-rdb #修复 RDB 持久化文件
redis-cli
登录数据库使用的命令
redis-cli -h IP地址 -p 端口 -a 密码
-h 指定远程主机
-p 指定 Redis 服务的端口号
-a 指定密码,未设置数据库密码可以省略-a 选项
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数据的存放和获取
set:存放数据,命令格式为 set key value
get:获取数据,命令格式为 get key
查询数据
可以筛选数据 和正则类似
keys 命令可以取符合规则的键值列表,通常情况可以结合*、?等选项来使用。
keys * #查看当前数据库中所有的数据
keys v* #查看当前数据库中以v开头的数据
keys v?? #查看当前数据库中以v开头后面包含任意一位的数据
keys v?? #查看当前数据库中以v开头后面包含任意两位的数据
键值的判断
用来判断一个键值存不存在
exists 命令可以判断键值是否存在。
exitsts 键值
返回值为1表示存在,0表示不存在
del 命令可以删除当前数据库的指定 key。
del 键值
type 命令可以获取 key 对应的 value 值类型。
type 键值
覆盖键值
对一个已有的键值进行覆盖 数据也会被覆盖 所以在覆盖时要检查原来的键值 以免数据丢失
rename 源key 目标key
renamenx 命令是对已有 key 进行重命名,并检测新名是否存在,如果目标 key 存在则不进行重命名。(不覆盖原来的数据)
renamenx 源key 目标key
dbsize 命令的作用是查看当前数据库中 key 的数目
dbsize
密码验证
用于安全 必须要验证密码通过 否则操作无法执行
config set requirepass 密码 设置一个密码
auth 密码 验证密码
config get requirepass 查看当前数据库的密码
config set requirepass '' 删除密码
四 redis多数据库操作
Redis 支持多数据库,Redis 默认情况下包含 16 个数据库,数据库名称采用数字 0-15 来依次命名的。多数据库相互独立,互不干扰。
在登录redis时 默认使用的是0号库
select 库的序号 切换到其他的库
move 键 库号 移动一个键值到其他的库
get 键 获取键值
FLUSHDB :清空当前数据库数据
FLUSHALL :清空所有数据库的数据,和rm-rf一样 没事别乱用这个