Redis相关知识
来源:互联网 发布:韩信点兵 算法 编辑:程序博客网 时间:2024/06/17 02:50
Redis教程及命令 -传送门
Redis简介
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。一个用于构建高性能的解决方案,,可扩展的Web应用程序。
三个特点
- Redis将其数据库完全保存在内存中,仅使用磁盘进行持久化。
- 与其它键值数据存储相比,Redis有一组相对丰富的数据类型。
- Redis可以将数据复制到任意数量的从机中。
Redis的优点
- 异常快
- Redis非常快,每秒可执行大约110000次的设置(SET)操作,每秒大约可执行81000次的读取/获取(GET)操作。
支持丰富的数据类型
- string:就跟普通的键值对无区别,value是一个字符串
- hash:被存储的value又是一个键值对
- list:一个链表,分别有zipList、linkedList(底层编码方式)
- set:存储字符串类型的无序集合,要求里面的字符串都不相同
- sort-set:一个有序集合,里面的字符串与一个分值相关联,然后根据分值对所有的字符串排序的有序集合
操作具有原子性
- 所有Redis操作都是原子操作,这确保如果两个客户端并发访问,Redis服务器能接收更新的值。
- 多实用工具
- 可用于多种用例,如:缓存,消息队列(Redis本地支持发布/订阅),应用程序中的任何短期数据,例如,web应用程序中的会话,网页命中计数等。
Redis环境安装配置 - 传送门
Redis本地实现发布-订阅者模式
Redis本地实现发布-订阅者模式,发布者在订阅者接收消息时发布消息,传送消息的链路称为信道。这使得redis实现消息队列。
- 订阅者订阅redisChat信道
SUBSCRIBE redisChat(信道名称自定义)
- 发布者发布消息到redisChat信道
PUBLISH redisChat "this is a message"
Redis事务
事务由MULTI启动,EXEC执行。
redis 127.0.0.1:6379> MULTI OK redis 127.0.0.1:6379> SET mykey "redis" QUEUED redis 127.0.0.1:6379> GET mykey QUEUED redis 127.0.0.1:6379> INCR visitors QUEUED redis 127.0.0.1:6379> EXEC1) OK 2) "redis" 3) (integer) 1
Redis脚本
Redis脚本用于使用Lua解释器来执行脚本。从Redis 2.6.0版开始内置到Redis中。使用脚本的命令是EVAL命令。
redis 127.0.0.1:6379 > EVAL "return {KEYS[1],KEYS[2],ATGS[1],ARGS[2]}" 2 key1 key2 first second 1) "key1" 2) "key2" 3) "first" 4) "second"
Redis备份
Redis数据库可以使用安全的方案,使得进行连接的任何客户端在执行命令之前都需要进行身份验证。要保护Redis安全,需要在配置文件中设置密码。
- 为实例设置密码
redis
CONFIG get requirepass "xxxxxx"
Redis准则
Redis基准测试是通过同时运行n个命令来检查Redis的性能的实用程序。
- 准则测试命令的基本语法
redis
yiibai@ubuntu:~$ redis-benchmark [option] [option value]
Redis客户端连接
- Redis在配置的监听TCP端口和Unix套接字上等待和接受客户端的连接(如果已启用)。 当接受新的客户端连接时,执行以下操作
- 由于Redis使用复用和非阻塞I/O,因此客户端套接字处于非阻塞状态。
- 设置TCP_NODELAY选项是为了确保连接不延迟。
- 创建可读文件事件,以便Redis能够在套接字上读取新数据时收集客户端查询。
Redis管道
管道的基本含义是,客户端可以向服务器发送多个请求,而不必等待回复,并最终在一个步骤中读取回复。
reids默认请求模式
redis是一个TCP服务器,默认支持请求/响应模式。
请求/响应步骤
- 客户端向服务器发消息,以阻塞的方式,等待服务器响应。
- 服务器处理命令并将响应发送回客户端。
管道的好处
大大提高了协议性能:通过管道从连接到本地主机速度增加五倍,因特网连接的至少快一百倍。
- 示例:
$(echo -en "PING\r\n SET tutorial redis\r\nGET tutorial\r\nINCR visitor\r\nINCR visitor\r\nINCR visitor\r\n"; sleep 10) | nc localhost 6379 +PONG +OK redis :1 :2 :3
Redis分区
分区是将数据拆分为多个Redis实例的过程,因此每个实例只包含一部分键。
分区类型
Redis中有两种类型的分区。假设有四个Redis实例:R0,R1 ,R2,R3以许多代表用户的键,如user:1,user:2,…等等。
- 范围分区
将对象的范围映射到特定的Redis实例来实现。从ID 0到ID 10000的用户将进入实例R0,而从ID 10001到ID 20000的用户将进入实例R1,以此类推。 - 哈希分区
在这种类型的分区中,使用散列函数(例如,模函数)将键转换成数字,然后将数据存储在不同的Redis实例中。
- 范围分区
分区的优点
- 允许使用更大的数据库,不会再被单机最大内存限制
- 将计算和宽带负担分摊给多台计算机
- 分区的缺点
- 通常不支持涉及多个键的操作。 例如,如果两个集合存储在映射到不同Redis实例的键中,则不能执行两个集合之间的交集操作
- 不能使用涉及多个键的Redis事务
- 分区粒度是关键,因此不可能使用单个巨大的键(如非常大的排序集合)来分割数据集。
- 使用分区时,数据处理更复杂:例如必须处理多个RDB/AOF文件,并获得数据的备份,需要聚合来自多个实例和主机的持久性文件 。
- 添加和删除容量可能很复杂:例如Redis Cluster支持大多数透明的数据重新平衡,具有在运行时添加和删除节点的能力。但是,其他系统(如客户端分区和代理)不支持此功能。但可以使用一种叫作Presharding的技术来处理这方面的问题。
Redis持久化
Redis采用RDB和AOF进行持久化处理,可单独使用,也可以两种结合使用
- RDB(默认的持久化方式)
- 实现方式
一定的时间间隔将内存中的数据持久化到磁盘中,实现内存快照
- 优点
RDB文件是一个二进制文件,根据时间点进行数据记录,可以对其进行压缩处理后占用的存储空间很小,压缩后的文件可以进行远程存储,方便备份和全量的复制。并且Redis重启后的恢复速度很快
- 缺点
会造成出故障的时间点到上一次持久化的时间间隔内的数据丢失,因此适合做冷备份,在数据恢复的时候要创建进程,有时会使机器短时间不可用
- AOF
- 实现方式
以独立日志的方式记录每次写命令,重启时再重新执行AOF文件中的命令达到恢复数据的 目的
- 优点
以追加写命令的方式实现持久化,保证了更好的数据完整性,使目前主流的持久化方式
- 缺点
需要不断重写持久化文件来降低持久化文件的空间消耗
- redis相关知识简介
- Redis相关知识
- redis相关知识
- Redis相关知识
- Redis 安装启动相关知识
- redis缓存的相关知识
- 每日一得--redis缓存服务相关知识
- 关于Redis的相关知识个人总结
- redis持久化的相关知识
- 电商之梳理redis相关知识---java缓存技术
- Redis 知识
- redis知识
- Redis相关
- redis相关
- redis相关
- Redis相关
- redis相关
- Redis相关
- 阿里云MaxCompute携手华大基因打造精准医疗应用云平台
- 最全最好用的Android Studio插件整理
- java.util.ConcurrentModificationException异常
- 《链金有法》丛书文章之——招投标领域区块链应用概述
- 获取当前日期往后一周的日期,时间截取
- Redis相关知识
- BitmapFactory.Options 解决加载大图片OOM
- JAVA必背面试题和项目面试通关要点
- nanomsg框架简介
- jquery-ui sortable详解
- 【Scikit-Learn 中文文档】二十一:聚类
- 从源码了解handler looper ,messageQueue思路
- Python实现trie进行机械分词
- apply提高数组找出最大最小值的方式(性能)