Redis 内存数据库

目录
[隐藏]

学过了Memcached,怎么能放过 Redis 这个更加强大的内存数据库。

1、Redis 简介

 Redis 是一套性能非常高效的内存数据存储系统,Redis 把整个数据库全加载到内存当中操作,通过异步操作定期把数据库数据 flush 到硬盘上保存。本质上,Redis 是 Key-Value 类型的内存数据库,不过 Value 的类型更加丰富,可以是 String、List、Set、ZSet、hash 等数据结构。
值得注意的是:Redis 数据库是预先设计好的,不能再去创建数据库也没有创建命令,直接在配置文件中定义 Redis 数据库数量,默认为 16 ,每个数据库对应一个索引号(从 1 开始)。

1.1 对比 Redis 与 Memcached

相比于 Memcached 专用于缓存,Redis 既可以用作缓存系统同时还可以支持NoSQL。

Redis 与 Memcached 存储方式都是基于内存的,所有的数据读写都在内存中完成。但 Memcached 使用的是 libevent 库,而 Redis 则原生使用了 epoll 异步通信模型。另外,Redis 也支持数据持久化。

1.2 对比 Redis 与 MongoDB

虽然 Redis 与 MongoDB 同称为 NoSQL ,但两者还是有比较大的区别

首先 Redis 数据存储在内存中完成,速度具备优势,而MongoDB 使用的memory-mapped 处理方式本质上还是磁盘操作。

其次 Redis 支持简单的事务处理,而 MongoDB 不支持事务

当然,两者都考虑了分布式处理能力,所以都提供集群部署配置接口。

1.3 MySQL、Redis、Memcached 和 MongoDB 存储属性对比

数据库数据库数据表字段
MySQL字段
Rediskey
MongoDB集合文档属性
Memcachedkey

 通过上面这些,对 Redis 有个简单的认识了。

2、安装 Redis

和Memcached 一样,不建议在Windows上使用。而且 Redis 官方并没有提供 Widows 版本,不过微软开源团队自己弄了个,需要的自己去百度下载吧,这里只介绍 Linux 下安装了。

下载好 Redis 的压缩包后执行下列命令完成编译安装:

  tar -zxvf Redis-4.0.1.tar.gz

  cd Redis-4.0.1

  make

make 完后,src 目录下会生成几个可执行程序:

     redis-benchmark  #Redis 性能测试工具

     redis-cli                 #Redis命令行工具

     redis-check-aof     #检查日志文件 aof方式进行的持久化

     redis-check-rdb     #检查 rdb 文件,快照方式进行的持久化

     redis-server             #Redis 主程序             

Redis 并没有提供 make install 命令,所以要手动进行安装(其实就是复制一下)

cp redis.conf /etc/          #配置文件是在Redis主目录下,并不是在 src 下,所以记得切换目录

cp redis-benchmark redis-cli redis-server /usr/bin    #当然也可以把5个都复制过去

当然你想要更好的管理,也可以在 /usr/local/ 创建 Redis/bin/ 存放可执行程序,创建 Redis/etc/ 存放配置文件。

3、使用 Redis

首先启动 Redis 服务,  启动 Redis 服务进程是需要指定配置文件 redis.conf。而且默认配置下,是没有以后台方式运行的,所以启动前最好先修改下 redis.conf。

将配置文件中的 daemonize 配置项的值修改为 yes,表示以后台方式运行。

然后执行:/usr/local/Redis/bin/redis-server /usr/local/Redis/etc/redis.conf  即可启动服务

(注意路径)如下图:

可以通过 ps -A 查看是否有 redis-server 程序,或者通过 ss -ltnp | grep redis 查看是否启动成功(CentOS7 使用 ss 命令替代 netstat 命令),命令执行如下图

Redis 默认使用 6379 通信端口,所以还要记得在防火墙上开放 6379 端口。

现在就可以使用 redis-cli 命令行工具来和 redis-server 交互了

不过最终还是为了在应用程序中使用,所以命令行工具就不多说啦。

Redis  官方提供了包括 Java、C#、C++、PHP、JavaScript 等主流语言的API,可以在redis.io/clients 下载相应文件。对于 PHP 有独立的类文件和 php_redis 扩展。类文件直接在要用的地方导入即可使用API

安装 php 扩展:

    下载解压,进入主目录,

    执行 phpize 命令(在 php/bin 目录下,如果是yum安装的,可以通过 whereis phpize 查看路径)

    然后执行 ./configure --with-php-config=/usr/bin/php-config

    然后编译安装  make && make install

这样,就编译出了 .so 文件,并且 .so 文件已经在 php 的 extension 目录下,只需要在 php.ini 中加载.so 模块即可。这里依然还是建议不要直接改动 php.ini ,而应该在 php.d 目录下新建一个 redis.ini 来加载 .so 模块,重启后就可以在 PHP 中调用 API 访问 Redis。API 什么的就不说啦,查手册即可。

4. Redis 管理命令

redis-cli 管理终端内置了许多管理命令,列在下方:

flushdb:清空数据库

select db-index:通过索引选择数据库,db-index 替换为索引号,0表示所有

exists : 检查 key 是否存在

move:移动 key

del:删除 key

rename:更改 key 名称

expire :设置 key 名称

ttl key:永久化剩余时间(-1 则表示已经完成持久化)

persist:立即执行 key 数据持久化

type:获取 key 数据类型

randomkey:随机返回key

save:将数据同步保存到磁盘

bgsave:将数据异步保存到磁盘

lastsave:返回上次成功保存数据到磁盘的 Unix 时间戳

shutdown:将数据同步保存到磁盘,然后关闭服务

info:提供服务器信息和统计

monitor:实时转储接收到的请求

slaveof:改变复制策略设置

config:动态配置 Redis 服务器

quit:关闭连接

auth:简单密码认证

4.1 Redis 用户验证

既然客户端有 auth 密码认证命令,那主程序肯定能提供密码认证了。Redis 启用密码认证,只需要在配置文件中设置 requirepass 选项(后面跟的就是密码)。

redis-cli 有两种方式进行验证。一种是在登录 redis-cli 时,使用 -a 选项,并传入密码即可;另一种是进入 redis-cli 后,使用 auth 命令授权。

Redis 开启用户验证后,必须授权后才能进行相应操作。


上面对Redis 有了一个简单的记录,不过过多内容还在后续文章。

一步一步踏踏实实地走

发表评论

电子邮件地址不会被公开。 必填项已用*标注

To