Redis概述
Redis是什么
- Redis(Remote Dictionary Server 远程字段服务)是一个开源的使用ANSI C语言编写、支持网
络、内存亦可持久化的key-value数据库,并提供多种语言的API。 - Redis是一个key-value存储系统,它支持存储的value类型相对更多,包括string、list、set、
zset(sorted set --有序集合)和hash。这些数据结构都支持push/pop、add/remove及取交集并
集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,Redis支持各种不同方式的
排序。为了保证效率,数据都是缓存在内存中,Redis会周期性的把更新的数据写入磁盘或者把修
改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。 - Redis提供了java、C/C++、PHP、JavaScript、Perl、Object-C、Python、Ruby、Erlang等客户
端,使用很方便。
Redis能干嘛
- 读写效率高,用于高速缓存
- 发布,订阅消息(消息通知)
- 地图信息分析
- 活动排行榜或计数
- …………
Redis特点
- 多样的数据类型:Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,
hash等数据结构的存储。 - Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使
用。 - Redis的所有操作都是原子性的。
- 支持主从复制及集群。
Redis安装
下载地址
Redis官方网址:Downloads - Redis
没注册要先注册,不懂就搜。
下载Redis
- 下滑找到Install Redis from source
-
下载到/opt目录下
cd /opt wget https://download.redis.io/releases/redis-7.0.15.tar.gz
-
解压,解压后得到redis-stack-server-7.2.0-v10目录
解压命令:
tar -zxvf redis-7.0.15.tar.gz
安装GCC
安装C语言编译环境
yum group install "Development Tools" -y
通过使用 gcc --version 命令打印 GCC 版本,来验证 GCC 编译器是否被成功安装:
gcc --version
安装Redis
- 编译Redis
在redis-7.0.15目录下执行:
cd redis-stack-server-7.2.0-v10/
make
出现下图代表编译成功
-
安装Redis
在redis-7.0.15下执行:
make install
出现下图代表安装成功
-
安装目录: /usr/local/bin
redis-benchmark:Redis自带的基准性能测试工具
redis-check-aof:对有问题的 AOF 文件进行修复,AOF和RDB文件后面会说明
redis-check-rdb:对有问题的 RDB文件进行修复
redis-sentinel:Redis集群使用
redis-cli:客户端
redis-server:服务器启动 -
服务启动
前台启动:/usr/local/bin下执行
后台启动:
拷贝redis-6.2.4目录中的redis.conf文件到其他目录
mkdir /usr/local/myredis cd /opt/redis-7.0.15/ cp redis.conf /usr/local/myredis/redis.conf
设置/usr/local/myredis/redis.conf文件中的daemonize属性,由no改为yes
cd /usr/local/myredis/ vim redis.conf
在/usr/local/bin下执行
cd /usr/local/bin/ ./redis-server /usr/local/myredis/redis.conf
通过ps aux | grep redis-server查看服务是否启动
ps aux | grep redis-server
-
客户端启动
/usr/local/myredis/下执行
cd /usr/local/myredis/ redis-cli
ping命令可以检测服务器是否正常(服务器返回PONG)
ping
Redis基本知识
-
端口6379的由来
6379 = Merz
Merz全名Alessia Merz,是意大利的一位广告女郎。
-
默认有16个数据库,且初始状态默认选择0号数据库(即第一个数据库)。
-
可以使用select 进行数据库切换。
select 8 切换到8号数据库
-
统一密码管理,所有库密码都一致。
-
dbsize-查看当前数据库的key数量。
-
flushdb-清空当前库。
-
flushall-清空所有库。
-
为什么Redis是单线程且效率极高:
- 绝大部分请求是纯粹的内存操作。
- 避免了不必要的上下文切换和竞争条件,也不存在多进程或者多线程导致的切换而消耗 CPU,
- 不用去考虑。各种锁的问题,不存在加锁释放锁操作。
- 使用IO多路复用技术,可以处理并发的连接。