一、概述
Redis(Remote Dictionary Server,即远程字典服务器),是开源免费的、用C语言编写的、高性能的(key/value)分布式内存数据库,是一个遵守BSD协议,基于内存运行并支持持久化的NoSQL数据库,是当前最热门的NoSql数据库之一,也被人们称为数据结构服务器。
Redis 有以下特性:
1️⃣Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载使用
2️⃣Redis不仅仅支持简单的key-value类型的数据,同时还提供list、set、zset、hash等数据结构的存储
3️⃣Redis支持数据的备份:即master-slave模式的数据备份
Redis的应用场景:
①内存存储和持久化:redis支持异步将内存中的数据写到硬盘上,同时不影响继续服务
②取最新N个数据的操作,如:可以将最新的10条评论的ID放在List集合中
③模拟类似于HttpSession这种需要设定过期时间的功能
④发布、订阅消息系统
⑤定时器、计数器
二、安装
可参考菜鸟教程:Redis的安装
1、查看Linux系统是32位还是64位:
getconf LONG_BIT
2、将安装包解压后出现redis的文件夹
3、进入该文件夹,执行make命令,可能会出现如下错误:
出现此错误时,执行如下操作:安装gcc
sudo yum -y install gcc gcc-c++ libstdc++-devel
make MALLOC=libc #这一步就会安装Redis,下面的步骤可以不执行
执行完上述操作后再回到redis的安装目录执行make distclean命令,然后接着再执行make命令
4、make命令执行成功之后执行make install:安装成功
注
:gcc是linux下的一个编译程序,是C程序的编译工具。GCC(GNU Compiler Collection)是 GNU(GNU’s Not Unix) 计划提供的编译器家族,它支持 C、C++、Objective-C、Fortran、Java 和 Ada 等等程序设计语言,同时能够运行在 x86、x86-64、IA-64、PowerPC、SPARC 和 Alpha 等等几乎目前所有的硬件平台上。鉴于这些特征,以及 GCC 编译代码的高效性,使得 GCC 成为绝大多数自由软件开发编译的首选工具。虽然对于程序员们来说,编译器只是一个工具,除了开发和维护人员,很少有人关注编译器的发展,但是 GCC 的影响力是如此之大,它的性能提升甚至有望改善所有的自由软件的运行效率,同时它的内部结构的变化也体现出现代编译器发展的新特征。
5、查看安装目录:会看到以下几个文件
这些文件的作用:
文件 | 作用 |
---|---|
redis-benchmark | 性能测试工具,可以在自己的电脑上运行,查看电脑的性能,在服务启动后执行 |
redis-check-aof | 修复有问题的AOF文件 |
redis-check-dump | 修复有问题的dump.rdb文件 |
redis-cli | 客户端,操作入口 |
redis-sentinel | redis集群使用 |
redis-server | redis服务器启动命令 |
6、启动:修改redis.conf文件,将里面的daemonize no 改成 yes,才能让服务在后台启动
①进入redis的解压目录,将目录中的redis.conf拷贝一份到该目录下自建的目录myconf(在当前目录创建myconf子目录:mkdir myconf)中:cp redis.conf /opt/redis-3.0.4/myconf
②修改拷贝到myconf中的redis.conf文件,最好不要修改原文件,将daemonize no 改成 yes
③启动:进入到安装目录下的src目录,执行./redis-server redis.conf(作为服务端)
④连通测试:在另一个终端中,进入myconf目录下,执行redis-cli(作为客户端):发现端口6379启用,输入ping,会反馈pong
⑤关闭:在服务端执行ps -ef|grep redis查看正在运行的客户端,再执行redis-cli shutdown关闭客户端
redis-cli shutdown #单实例关闭
redis-cli -p 6379 shutdown #多实例关闭,指定端口关闭
当客户端连接不上服务端时,使用quit命令退出
注
:redis运行的是文件
7、HelloWorld:对数据的操作都是在客户端执行的
①启动服务端:在/usr/local/bin下执行命令redis-server /opt/redis-3.0.4/myconf/redis.conf(使用绝对路径)
②启动客户端:在另外一个终端上进入myconf目录,执行redis-cli
③在客户端执行:set key helloworld(在redis数据库中设置一个键值对key-helloworld)
④在客户端执行:get key(从redis中通过键key来获取它对应的值),就会将刚才设置的helloworld取出来
⑤关闭:redis-cli shutdown
三、Redis的特点
①、单进程
a、单进程模型来处理客户端的请求。对读写等事件的响应是通过对epoll函数的包装来做到的。Redis的实际处理速度完全依靠主进程的执行效率
b、Epoll是Linux内核为处理大批量文件描述符而作了改进的epoll,是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。
②Redis默认有16个数据库,类似数组下标从0开始,初始默认使用0号库
设置数据库的数量(databases 16),默认数据库为0,可以使用SELECT <dbid>命令进行数据库切换
③ Dbsize查看当前数据库的key的数量
④Flushdb:清空当前库
⑤Flushall;清空全部库
⑥统一密码管理,16个库都是同样密码,要么都OK要么一个也连接不上
⑦Redis索引都是从零开始
⑧默认端口是6379