Redis入门干货
简介
Redis 是开源的、遵循开源许可 BSD)协议的一款高性能NO_SQL 数据库。他支持数据的持久化和备份能力,并提供了较为丰富的储存数据类型(string, list,set,zset,hash)。
1、安装
windows下直接访问https://github.com/tporadowski/redis/releases地址取到目标压缩包,解压到目标的庄目录。然后从控制台中切换到包的解压目录下。使用redis-server.exe 开启redis服务。同时redis提供了客户端程序来访问服务,通过控制台切换到解压目录,然后运行redis-cli.exe -h 127.0.0.1 -p 6379打开客户端。
Linux 下从http://redis.io/download下载目标版本源代码,解压后通过make指令编译redis的服务及客户端。
主要的一些参数包括daemonize(是否以守护进程的方式运行)、pidfile(写入守护模式下的pid到目标文件)、port(监听端口)、bind(绑定主机地址)、timeout(连接超时时间) 、loglevel (日志级别)、save (数据同步频率)、dbfilename(设置本地数据库名)、dir (指定数据库存放目录)…。
2、配置
Redis的配置文件放在其安装目录之下,linux中的配置文件名为redis.conf,Windows 名为 redis.windows.conf。
获取配置的指令格式如下CONFIG GET CONFIG_SETTING_NAME。
设置配置的指令格式如下CONFIG SET CONFIG_SETTING_NAME NEW_CONFIG_VALUE。
主要命令
基础命令
$ redis-server 启动服务
$ redis-cli 启动客户端
$ ping 检查服务是否启动
键值操作
指令 | 说明 | 示例 |
---|---|---|
EXISTS key | 检查目标key是否存在 | EXISTS img_map |
DEL key | 删除目标key | DEL img_map |
EXPIRE key | 设置key的失效时间(秒) | EXPIRE img_map 20 |
TTL key | 查看目标key的过期时间 | TTL img_map |
RENAMENX key newkey | 修改目标key | RENAME img_map img_maps |
TYPE key | 查看目标key对应值得类型 | TYPE img_map |
DUMP key | 序列化key 并返回对应序列化的值 | DUMP img_map |
Redis数据操作指令
1 redis string
2 redis Hash
Redis hash 是一个 由多个 field(字段) 和 value(值) 组成的映射表字符串,故其很适合用存储对象。Redis 中一个 hash 最多可以存储 2^32 - 1 个键值对。
3 redis List
Redis List 是一个按照插入顺序排列的字符串列表,单个列表最多可以存储2^32-1个元素。
4 redis Set
Redis Set是一个string的无序集合,集合的元素是唯一的,其内部是通过Hash表实现的,故而其操作的复杂度和Hash是一样的,都是O(1),单个集合最多可以存储2^32-1个元素。
5 redis sorted set
Redis sorted Set是一个string的有序集合,集合的元素是唯一的,其内部是通过Hash表实现的,不同于set是他给每个元素都会关联一个 double 类型的分数,并基于其进行从小到大的排序,并且分数可以重复。故而其操作的复杂度和Hash是一样的,都是O(1),单个集合最多可以存储2^32-1个元素。
Redis消息
Redis的 消息通信方式是基于发布订阅者模式的。客户端通过订阅服务器上目标频道,在该频道有消息进入时,客户端即可收到目标消息。其模式如下:
客户端通过订阅Redis服务的目标频道来获取目标频道的实时消息,一个客户端可以订阅(sub)多个频道,当生产者发布消息到目标频道的时候,消息会被自主的发送给其频道的订阅者。
上图模式的实例如下:
也可以通过UNSUBSCRIBE [channel [channel …]] 退出指定频道的订阅。
Redis事务
Redis是支持事务处理的,一个事务可以包含多个指令,在事务的执行过程中,其他用提交的请求不会打断当前事务的执行,但是redis的事务并不是原子性的,也就是说在多指令组合的事务中,当前指令的失败执行并不影响其后面的指令继续执行下去。Redis事务的生命周期包括以下三个有序的部分:开始事务、命令入队、执行事务。resdis通过 MULTI 指令标记一个事务的开始,通过EXEC 指令开始事务的执行。
实例如下:
也可以通过DISCARD 取消事务的执行,以及通过WATCH key [key …] 监视事务中的可以,如果这些可以被其他命令修改,事务的执行就还被打断。
Redis stream
Redis Stream 是 Redis 5.0 版本中新增加的数据结构。主要用于redis-MQ,b并弥补了redis消息发布-订阅模式消息无法持久化的问题。其提供了消息的持久化和主备复制功能,可以为消息的使用者提供灵活多变的访问,并记录每个客户端访问位置信息,同时提供消息的持久化功能来保障消息不丢失。
其结构如图所示:
Redis Stream消息的产生及流的操作实例:
消费者的创建:
消费者获取消息: