Redis简介
Redis概述
Redis:REmote DIctionary Server(远程字典服务器),是当前比较热门的NOSQL系统之一,它是一个开源的使用ANSI c语言编写的key-value存储系统(区别于MySQL的二维表格的形式存储。)。和Memcache类似,但很大程度补偿了Memcache的不足。和Memcache一样,Redis数据都是缓存在计算机内存中,不同的是,Memcache只能将数据缓存到内存中,无法自动定期写入硬盘,这就表示,一断电或重启,内存清空,数据丢失。所以Memcache的应用场景适用于缓存无需持久化的数据。而Redis不同的是它会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,实现数据的持久化。
Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。
Redis 与其他 key - value 缓存产品有以下三个特点:
- Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
- Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
- Redis支持数据的备份,即master-slave模式的数据备份。
Redis 特点
-
性能极高:Redis能读的速度是110000次/s,写的速度是81000次/s 。
-
丰富的数据类型:Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
-
原子:Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
-
丰富的特性:Redis还支持 publish/subscribe、通知、key 过期等等特性。
-
支持多种数据结构:string(字符串)、list(列表)、hash(哈希)、set(集合)、zset(有序集合)。
-
持久化,主从复制(集群)。
-
支持过期时间、支持事务、消息订阅。
-
官方不支持Windows,但有第三方版本支持。
Redis的应用场景
1、数据缓存(数据查询、短连接、新闻内容、商品内容等等,提高访问性能) ,将一些数据在短时间之内不会发生变化,而且它们还要被频繁访问,为了提高用户的请求速度和降低网站的负载,降低数据库的读写次数,就把这些数据放到缓存中。
2、会话缓存(session cache,保存web会话信息)。
3、排行榜计数器(NGINX+lua+redis计数器进行IP自动封禁)
4、消息队列(构建实时消息系统,聊天,群聊)。
Redis安装
Windows下安装
官网下载Windows版,解压即可。
- redis.windows.conf:配置文件。
- redis-cli.exe:redis的客户端。
- redis-server.exe:redis服务器端。
Linux下安装
基于CentOS,官网下载Redis(Redis5.0.4为最新的稳定版),使用XFTP工具上传到Linux上。
1、安装gcc,目的是编译软件
yum install gcc-c++
2、解压到 /usr/local/src里面
tar -zxvf redis-5.0.4.tar.gz
3、重命名
[root@localhost src]# mv redis-5.0.4 redis
4、打开 /usr/local/src/redis/deps 进行编译依赖项
cd /usr/local/src/redis/deps
[root@localhost deps]# make hiredis lua jemalloc linenoise
5、打开 /usr/local/src/redis 进行编译
[root@localhost redis]# cd ..
[root@localhost redis]# make
6、在上面的redis目录安装 安装到 /usr/local/redis 里面
mkdir /usr/local/redis
make install PREFIX=/usr/local/redis
7、验证安装是否成功
cd /usr/local/redis/bin
ls
看到如下启动文件就说明安装成功:
使用which命令查看系统里面是否有redis的服务:which redis-server
。
[root@localhost bin]# which redis-server
/usr/bin/which: no redis-server in (/usr/local/mysql/mysql57/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
显示为没有,把配置文件移动到/usr/local/redis/etc
目录[目录可以自定义]可以为/usr/myredis
或者/root/myredis
。
使用which命令查看系统里面是否有redis的服务。
mkdir /root/myredis
cp /usr/local/src/redis/redis.conf /root/myredis
启动Redis
cd /usr/local/redis/bin
./redis-server /root/myredis/redis.conf
新建一个连接端口,在/usr/local/redis/bin
目录下执行./redis-cli
命令。
默认情况,Redis不是在后台运行,我们需要把redis放在后台运行。修改redis的配置文件。
vi /root/myredis/redis.conf
Redis的客户端启动和退出
./redis-cli
指令默认的参数是-h 127.0.0.1 -p 6379
# 退出使用quit指令
127.0.0.1:6379> quit
[root@localhost bin]#
停止Redis
cd /usr/local/redis/bin
[root@localhost bin]# ./redis-cli shutdown
#或者
kill redis-server
#再次查看进程
ps -ef|grep redis
开机自启Redis的配置
vim /etc/rc.local
加入
/usr/local/redis/bin/redis-server /root/myredis/redis.conf
bin目录的文件说明
redis-benchmark:redis性能测试工具
redis-check-aof:检查aof日志的工具
redis-check-dump:检查rdb日志的工具
redis-cli:连接用的客户端
redis-server:redis服务进程
使用Docker安装
docker pull redis
#启动
docker run -d --name myredis -p 7001:6379 redis --requirepass "123456"
#查看redis是否启动
ps -ef|grep redis
启动Redis后的预备知识
Redis采用单进程单线程:
采用多路 I/O 复用技术可以让单个线程高效的处理多个连接请求(尽量减少网络IO的时间消耗),因为多线程处理可能涉及到锁,多线程处理会涉及到线程切换而消耗CPU,而单进程不存在线程安全问题。
缺点:无法发挥多核CPU性能,不过可以通过在单机开多个Redis实例来完善。
默认16个兄弟一起站台:
默认16个数据库,类似数组下标从零开始,初始默认使用零号数据库。
切换数据库命令:select命令切换数据库,如select 0
。
常用基本命令:
-
dbsize查看当前数据库的key的数量。
-
flushdb:清空当前库。
-
flushall:通杀全部库,清空所有库。
其它说明
统一密码管理,16个库都是同样密码,要么都连接上,要么一个也连接不上,默认没有密码,可以在redis的配置文件里设置密码:如修改密码为123456。
Redis索引都是从零开始。