您的位置:首页 > 数据库 > Redis

Redis 学习笔记(一):安装配置、发布订阅与事务

2017-07-20 21:48 686 查看
目录:

Redis 简介

安装与配置

键命令

Redis 发布与订阅

Redis 事务

1. Redis 简介

Remote DictionaryServer(Redis)是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

Redis 与其它键值数据存储系统相比,有三个主要特点:

Redis 将其数据库完全保存在内存中,仅使用磁盘进行持久化;
Redis 支持一组丰富的数据类型;
Redis 可以将数据复制到任意数量的从机中。
优点:

非常快: Redis非常快,每秒可执行大约110000次的设置(SET)操作,每秒大约可执行81000次的读取/获取(GET)操作。
丰富的数据类型: Redis支持大多数数据类型,例如列表,集合,排序集和散列等等。
原子性:所有Redis操作都是原子性的。
多实用工具: Redis还支持如:发布订阅,通知,key过期等功能。
2.安装与配置

Windows 下安装

下载地址:https://github.com/MicrosoftArchive/redis/releases



解压完成之后,打开 cmd ,进入到 Redis 的解压目录(我的在 D:\Redis-x64-3.2.100),运行下面的命令,启动服务端:

redis-server.exe redis.windows.conf

会出现下面的服务端界面



然后再启一个 cmd 窗口,原来的不要关闭,不然就无法访问服务端了。

同样切换到 Redis 目录下,运行下面命令连接服务端

redis-cli.exe -h 127.0.0.1 -p 6379      #127.0.0.1是IP地址,
6379
是服务器端口


会出现下面客户端界面,表示已经启动客户端并连接到服务端,可以进行数据库操作了。



Linux 下安装

Ubuntu:

# sudo apt-get update

# sudo apt-get install redis-server

# redis-server #启动 redis 服务

打开另一个终端,执行下面命令启动客户端

# redis-cli # 打开 redis 客户端

CentOS:

下载编译

# wgethttp://download.redis.io/releases/redis-2.8.17.tar.gz       
#下载源码

# tar xzf redis-2.8.17.tar.gz         
#解压

# cd redis-2.8.17               #进入 redis 目录 

# make                  #编译

启动服务器

# cd src

# ./redis-server

打开另一个终端,启动客户端

# cd src

# ./redis-cli

服务端界面:



客户端界面:



查看参数

redis 127.0.0.1:6379> CONFIG GET CONFIG_NAME #获取参数信息

redis 127.0.0.1:6379> CONFIG GET * #获取所有参数





设置参数

redis
127.0.0.1:6379> CONFIG SET CONFIG_NAME CONFIG_VALUE



常用参数含义:

[align=center][/align]
[align=center][/align]

参数
含义
默认/可选值
daemonize no
是否以守护进程运行,
默认no
port 6379
监听端口,
默认6379
bind127.0.0.1
绑定的IP地址
 
timeout 300
客户端最长闲置时间,
0关闭此功能
loglevel verbose
日志记录级别
默认verbose
databases 16
数据库的数量
默认0
save <seconds> <changes>
数据同步条件,多少秒内多少次更新。保存RDB快照
900 1、300
10 、60 10000       
dbfilename dump.rdb
本地数据库文件名
默认dump.rdb
dir ./
本地数据库存放目录
 
Slaveof <ip> <port>
为slav时,master的
IP及端口
 
Masterauth < password>
slav连接master的密码
 
maxclients 128
同一时间最大客户端连接数
默认无限制
maxmemory <bytes>
最大内存限制
 
appendonly no
每次更新后是否写日志
默认为no
appendfilename appendonly.aof
日志文件名
 
appendfsync everysec
更新日志条件。保存AOF日志
no always everysec
Redis 提供了两种持久化方式:RDB 和 AOF:

RDB 是一个非常紧凑的文件,它保存了 Redis 在某个时间点上的数据集。save 参数指定同步条件:多少秒内发生多少次更新时进行同步。SAVE 和 BGSAVE 命令用于保存 RDB 快照。

AOF 日志记录服务器执行的所有写操作命令。每次命令追加到文件末尾。appendfsync 参数指定更新条件:no(等操作系统缓存时更新)、always(每次写操作都更新)、everysec(每秒更新一次)。

虚拟内存(VM)机制

由参数 vm-enabled yes设置。

VM 机制将数据分页存放,由Redis将访问量较少的页即冷数据swap到磁盘上,访问多的页面由磁盘自动换出到内存中。

使用VM机制的原因:

1)redis 是内存数据库,数据很大时不能全部加载到内存。

2)被访问的数据总是占全部数据小部分,大部分数据是很少被访问的。

3. 键命令

Redis 键命令用于管理 redis 的键。 键命令的基本语法如下:

redis 127.0.0.1:6379> TYPE keyname

TYPE 是键命令,keyname 是键名。常见的 redis 键命令有:

基本键命令
描述
DEL key
key存在时删除
EXISTS key
检查 key是否存在
EXPIRE key seconds
设置 key的过期时间(秒)
PEXPRIRE key ms
设置 key的过期时间(毫秒)
KEYS pattern
查找给定模式的 key
MOVE key dbname
移动 key到数据库
dbname中
PERSIST key
移除 key的过期时间
PTTL key
以毫秒返回过期时间
TTL key
以秒返回过期时间
RANDOMKEY
随机返回一个 key
RENAME key newkey
对 key改名
TYPE key
返回 key对应值的类型
使用例子:




4. 发布与订阅

发布订阅 (pub/sub) 是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。

Redis 客户端可以订阅任意数量的频道。

订阅

下图展示了频道 channel1 , 以及订阅这个频道的三个客户端 —— client1 、 client2 和 client3 之间的关系:



发布

当有新消息通过 PUBLISH 命令发送给频道 channel1 时, 这个消息就会被发送给订阅它的三个客户端:



发布订阅命令
描述
SUBSCRIBE channel [channel]
订阅:一个或多个给定的频道
PUBLISH channel message
发布:将信息发送到指定频道
PUBSUB subcommand [arg[arg..]]
查看订阅与发布的状态
UNSUBSCRIBE [channel [channel..]]
退订:给定的频道
PSUBSCRIBE pattern [pattern..]
订阅:给定模式的频道
PUNSUBSCRIBE [pattern [pattern..]]
退订:给定模式的频道
使用例子:



5. 事务

Redis 事务可以一次执行多个命令, 并且带有以下两个重要的保证:

单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。

原子操作:事务中的命令要么全部被执行,要么全部都不执行。

一个事务从开始到执行会经历以下三个阶段:

开始事务;

命令入队;

执行事务。

事务命令
描述
MULTI
标记:一个事务的开始
EXEC
执行:事务块内所有命令
DISCARD
取消事务:放弃执行事务块内的所有命令
WATCH key [key..]
监视:一个或多个键。如果键被改动,事务被打断
UNWATCH
取消监视:对所有键
使用例子:





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息