Redis简介
Redis (Remote Dictionary Server),即远程字典服务!
是用 C 语言开发的一个开源的高性能键值对(key-value)数据库,并提供多种语言的API。
Redis的特点
- 数据间没有必然的关联关系
- 内部采用单线程机制进行工作
- 高性能。官方提供测试数据,50个并发执行100000 个请求,读的速度是110000 次/s,写的速度是81000次/s。
- 多样的数据类型支持
- 持久化支持。可以进行数据灾难恢复
- 集群
- 事务
Redis 的应用
- 为热点数据加速查询(主要场景),如热点商品、热点新闻、热点资讯、推广类等高访问量信息等
- 任务队列,如秒杀、抢购、购票排队等
- 即时信息查询,如各位排行榜、各类网站访问统计、公交到站信息、在线人数信息(聊天室、网站)、设
备信号等 - 地图信息分析
- 时效性信息控制,如验证码控制、投票控制等
- 分布式数据共享,如分布式集群架构中的 session 分离
- 消息队列
- 分布式锁
Redis安装
官网 下载6.2.1版本
gcc -v 查看gcc版本
发现是4.8.5
yum -y install centos-release-scl
yum -y install gcc-c++ devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
scl enable devtoolset-9 bash
需要注意的是scl命令启用只是临时的,退出shell或重启就会恢复原系统gcc版本。
如果要长期使用gcc 9.3的话:
echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile
这样退出shell重新打开就是新版的gcc了
官网下载redis源码包
tar xf redis-6.2.1.tar.gz
cd redis-6.2.1/
make
make install
redis默认安装路径:/usr/local/bin
自建一个文件夹名叫redis_config
将redis配置文件 复制到redis_config下
cp /root/redis-6.2.1/redis.conf /usr/local/bin/redis_config
修改配置文件
vim redis.conf
# 开启后台启动
daemonize yes
启动redis服务
redis-server redis_config/redis.conf
连接redis
redis-cli -p 6379
127.0.0.1:6379> set name maomao
OK
127.0.0.1:6379> get name
"maomao"
安装成功
Redis性能测试
redis-benchmark
是一个压力测试工具
官方自带的性能测试工具
redis-benchmark 命令参数
选项 | 描述 | 默认值 |
---|---|---|
-h | 指定服务器主机名 | 127.0.0.1 |
-p | 指定服务器端口 | 6379 |
-s | 指定服务器socket | |
-c | 指定并发连接数 | 50 |
-n | 指定请求数 | 10000 |
我们来简单测试
100个并发连接 100000个请求
redis-benchmark -h localhost -p 6379 -c 100 -n 100000
Redis的一些基础知识
关闭Redis服务
127.0.0.1:6379> shutdown
not connected> exit
redis默认有16个数据库
配置文件里面
vim redis.conf
databases 16
默认使用的是第0个数据库
可以使用select进行切换数据库
127.0.0.1:6379> select 1
OK
DBSIZE查看当前库的空间
127.0.0.1:6379[1]> dbsize
(integer) 0
信息添加
设置 key,value 数据
语法:
set key value
127.0.0.1:6379> set name maomao
127.0.0.1:6379> set name xiaotian
信息查询
根据 key 查询对应的 value,如果不存在,返回空(nil)
语法:
get key
127.0.0.1:6379> get name
"xiaotian"
帮助
获取命令帮助文档,获取组中所有命令信息名称
语法:
help 命令名称
127.0.0.1:6379> help set
SET key value [EX seconds|PX milliseconds|EXAT timestamp|PXAT milliseconds-timestamp|KEEPTTL] [NX|XX] [GET]
summary: Set the string value of a key
since: 1.0.0
group: string
127.0.0.1:6379> help get
GET key
summary: Get the value of a key
since: 1.0.0
group: string
测试ping
127.0.0.1:6379> ping
PONG
显示pong说明连接成功
exists判断是否存在
127.0.0.1:6379> exists name
(integer) 1
127.0.0.1:6379> exists age
(integer) 0
move 移动key去别的库
127.0.0.1:6379> move name 1
(integer) 1
127.0.0.1:6379> exists name
(integer) 0
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> get name
"xiaotian"
EXPIRE设置key的过期时间
127.0.0.1:6379[1]> expire name 5
(integer) 1
127.0.0.1:6379[1]> ttl name
(integer) 3
127.0.0.1:6379[1]> ttl name
(integer) 1
127.0.0.1:6379[1]> ttl name
(integer) -2
127.0.0.1:6379[1]> exists name
(integer) 0
127.0.0.1:6379[1]> get name
(nil)
type查看类型
127.0.0.1:6379[1]> set name maomao
OK
127.0.0.1:6379[1]> type name
string