简介
Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。
Redis 与其他 key - value 缓存产品比较有以下三个特点:
Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。memcache 不支持。
Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
Redis支持数据的备份,即master-slave模式的数据备份,memcache 不支持。
应用场景
消息模式
队列模式 #所有生产者把生产的消息放入同一个列表,等着消费者去消费
所有应用按顺序插入值到list1 中,消费者通过rpop/lpop 命令,按顺序执行删除命令,此命令会返回被删除的值,此过程可以理解为消息的消费。
订阅发布模式 #一个频道,客户端订阅频道。发送者发送关消息,订阅者接收消息。场景:微博关注
SUBSCRIBE mq1 #消费者先订阅,订阅频道可以事先不存在
PUBLISH mq1 "hello man" #生产者往频道推送消息
Redis 特性
1.性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
2.丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
3.原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。
4.丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。
Linux 下安装
下载地址:http://redis.io/download,下载最新稳定版本。
本教程使用的最新文档版本为 2.8.17,下载并安装:
$ wget http://download.redis.io/releases/redis-2.8.17.tar.gz
$ tar xzf redis-2.8.17.tar.gz
$ cd redis-2.8.17
$ make
make完后 redis-2.8.17目录下会出现编译后的redis服务程序redis-server,还有用于测试的客户端程序redis-cli,两个程序位于安装目录 src 目录下:
下面启动redis服务.注意这种方式启动redis 使用的是默认配置。
$ cd src
$ ./redis-server
也可以通过启动参数告诉redis使用指定配置文件使用下面命令启动。
$ cd src
$ ./redis-server ../redis.conf
redis.conf 是一个默认的配置文件。我们可以根据需要使用自己的配置文件。
启动redis服务进程后,就可以使用测试客户端程序redis-cli和redis服务交互了。 比如:
$ cd src
$ ./redis-cli
redis> set foo bar
OK
redis> get foo
"bar"
redis 配置
1、daemonize介绍
yes 以守护进程方式在后台启动
no 启动后占用当前终端
2、设置密码
requirepass test123
重启服务生效
4、开启远程访问
bind 127.0.0.1 #更改为0.0.0.0
protected-mode no 注:在redis3.2之后,redis增加了protected-mode,在这个模式下,即使注释掉了bind 127.0.0.1,再访问redisd时候还是报错,所以需要配置为这样。
5、关于持久化详见该文章
同一台服务器配置多个实例时配置
1.更改端口,防止冲突
2.更改 pidfile
3.更改 logfile
命令
redis-server redis.conf #指定文件来启动,不指定会加载默认配置启动 redis-cli -h 1.1.1.1 -p 6380 #端口不是默认的,连接时需指定,不指定IP默认访问 127.0.0.1
登陆后操作:
auth passwd #如果设置了require pass 需要登陆后认证否则无法操作
SHUTDOWN #关闭数据库,比kill 更好的关闭命令
config get * #获取当前所有配置信息
config set loglevel "notice" #设置日志级别,只在当前生效,重启后失效
type name #查看字段类型
info
cliet list
monitor #监控redis 上面执行操作,当前终端显示其他客户端对redis的操作
save #无持久化策略时执行此命令会自动生成dump.rdb ,只要有此文件在redis 目录中,启动redis 后会自动加载该文件把数据#加载到内存当中去。