1-Redis介绍及安装
Redis介绍及环境安装
前置环境
centos7.9 最小化安装
redis-6.0.6.tar.gz
环境可以连接外网用于安装环境依赖
安装依赖环境并确认gcc版本
yum install centos-release-scl
yum install devtoolset-7-gcc*
scl enable devtoolset-7 bash
安装reidis
- 解压安装包
tar -zxvf redis-6.0.6.tar.gz
- 进入安装目录
cd redis-6.0.6
- 编译安装
make
make install
redis 默认安装路径
cd /usr/local/bin/
-
创建目录 并将redis的配置文件复制到 程序安装目录 /usr/local/bin/kconfig下
mkdir peizhi cp /opt/redis-6.0.6/redis.conf /usr/local/bin/peizhi/
-
redis默认不是后台启动 需要修改配文件 大概在文件的220行左右
vim /usr/local/bin/peizhi/redis.conf
-
通过指定的配置文件启动服务
cd /usr/local/bin redis-server peizhi/redis.conf
-
用redis-cli连接redis,Redis的默认端口6379
redis-cli -p 6379
-
查看redis进程是否开启
ps -ef |grep redis
-
关闭 退出redis
-
shutdown
exit
redis-benchmark介绍
redis-benchmark 是redis自带官方压力测试官方工具
#测试 100并发连接 100000请求
redis-benchmark -h localhost -p 6379 -c 100 -n 100000
后面可以根据自己的要求调节参数测试
启动服务
redis-server peizhi/redis.conf
ps -ef |grep redis
100000 requests completed in 1.71 seconds #10万次访问请求
100 parallel clients # 100客户端并发连接
3 bytes payload#每次3 bytes
keep alive: 1 #单机性能
host configuration "save": 900 1 300 10 60 10000
host configuration "appendonly": no
multi-thread: no
36.99% <= 1 milliseconds
97.37% <= 2 milliseconds
99.88% <= 3 milliseconds
99.90% <= 15 milliseconds
99.90% <= 16 milliseconds
100.00% <= 16 milliseconds #16毫秒完成请求
58548.01 requests per second #每秒处理58548.01次请求
redis基础知识
reids默认有16个数据库 默认使用第0个数据库
vim peizhi/redis.conf
127.0.0.1:6379> select 3 #select 用于切换数据库
OK
127.0.0.1:6379[3]> dbsize # dbsize查看数据库key的个数 现在是0
(integer) 0
127.0.0.1:6379[3]>
不同数据库之间 数据是不能互通的
127.0.0.1:6379[3]> set name panlin #数据库3中设置key
OK
127.0.0.1:6379[3]> select 6 #切换到数据库6
OK
127.0.0.1:6379[6]> get name #查不到key
(nil)
127.0.0.1:6379[6]> select 3 #切换到数据库3 才能看到刚才写入的数据
OK
127.0.0.1:6379[3]> get name
"panlin"
127.0.0.1:6379[3]>
127.0.0.1:6379[3]> keys * #查看所有的key
1) "name"
127.0.0.1:6379[3]> keys * #查看所有keys
1) "name"
127.0.0.1:6379[3]> flushdb #清空本数据库
OK
127.0.0.1:6379[3]> keys * #清空完成
(empty array)
127.0.0.1:6379[3]>
127.0.0.1:6379> keys * #0号数据库的内容 包含压测写入的数据
1) "mylist:{tag}"
2) "counter:{tag}:__rand_int__"
3) "key:{tag}:__rand_int__"
127.0.0.1:6379> select 3 #切换到3号数据库
OK
127.0.0.1:6379[3]> FLUSHALL # 清空所有数据库
OK
127.0.0.1:6379[3]> SELECT 0 #切换回0号数据库
OK
127.0.0.1:6379> keys * #同样也被清空了
(empty array)
127.0.0.1:6379>
关于redis的一些问题
什么是redis
Redis(Remote Dictionary Server ),即远程字典服务。
是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
Redis能做什么用
- 内存存储、持久化,内存是断电即失的,所以需要持久化(RDB、AOF)
- 用于访问数据库的缓冲
- 发布订阅系统
- 地图信息分析
- 计时器、计数器(eg:浏览量)
- 。。。
redis特性
-
多样的数据类型
-
持久化
-
集群
-
事务
-
...
redis为什么这么快
-
redi是单线程的
-
redis的瓶颈不是cpu 瓶颈来源于是带宽和内存
-
单线程为什么还快
多线程的程序 因为有cpu 上下文切换 和cpu的性能有关
redis 所有的数据都放到内存中 单线程没有上下文切换
对于内存系统 没有上下文切换效率个更高 多次读写都在一个cpu上进行。
本节命令
命令不区分大小写
./redis-server #启动服务
redis-cli -p 6379 #通过客户端连接redis
redis-benchmark #redis性能测试工具
shutdown #关闭redis
exit #退出redis-clikeys * #查看所有keys
flushdb #清空本数据库
select 3 #切换到3号数据库
set name panlin #数据库3中设置key
get name #查看当前数据库的key