REDIS - 技术教程文章

Redis基础篇(二)高性能IO模型【图】

我们经常听到说Redis是单线程的,也会有疑问:为什么单线程的Redis能那么快?这里要明白一点:Redis是单线程,主要是指Redis的网络IO和键值对读写是由一个线程来完成的,这也是Redis对外提供键值存储服务的主要流程。但Redis的其他功能,比如持久化、异步删除、集群数据同步等,都是由额外的线程执行的。我们知道多线程能够提升并发性能,那为什么Redis会采用单线程,而非多线程?为什么单线程能那么快?下面我们就来学习一下Redis...

三. Redis 主从复制【图】

特点1. Master可以拥有多个Slave2. 多个Slave除可以连接一个Master外,还可以连接多个Salve(避免Master挂掉不能同步,当Master挂掉,其中一个Slave会立即变成Master)3. 主从同步的时候不会阻塞Master,同步的时候Master仍然可以继续处理Client请求4. 提高伸缩性 主从同步原理1. Slave向Master发起建立连接,发起同步请求命令2. Master会启动一个后台,将数据快照保存到文件中,同时Master主进程会收集新的写命令并缓存3. 后台完成保...

Go语言之从0到1实现一个简单的Redis连接池【代码】

Go语言之从0到1实现一个简单的Redis连接池前言最近学习了一些Go语言开发相关内容,但是苦于手头没有可以练手的项目,学的时候理解不清楚,学过容易忘。结合之前组内分享时学到的Redis相关知识,以及Redis Protocol文档,就想着自己造个轮子练练手。这次我把目标放在了Redis client implemented with Go,使用原生Go语言和TCP实现一个简单的Redis连接池和协议解析,以此来让自己入门Go语言,并加深理解和记忆。(这样做直接导致的后...

Redis中connect与pconnect区别?

1.首先先介绍下connect和pconnect的区别。connect:脚本结束之后连接就释放了。 2.pconnect:脚本结束之后连接不释放,连接保持在php-fpm进程中。所以使用pconnect代替connect,可以减少频繁建立redis连接的消耗。 redis手册中的介绍 connect, open DescriptionConnects to a Redis instance. 连接到一个Redis实例Parameters host: string. can be a host, or the path to a unix domain sockethost:字符串类型可以使一...

Auzre微软云Redis后台StackExchange.Redis使用KeySpaceNotification实现缓存过期前操作/处理一些事件【代码】

https://github.com/rustd/RedisSamples/blob/master/HelloWorld/KeySpaceNotifications.cs懂的可以直接看上面官方提供的demo代码就明白怎么用了 Auzre上面需要设置keyspace notifications with "Kxg" 然后在项目启动的时候订阅,比如使用的是Nancy,就在Boostrapper启动里加上订阅程序个人示例代码:var db = CacheManager.Connection.GetDatabase();var subscriber = CacheManager.Connection.GetSubscriber();subscriber.Subscr...

云数据库 Redis 版,知识点

资料网址什么是云数据库Redis版https://help.aliyun.com/document_detail/26342.html?spm=a2c4g.11174283.6.542.6b11dce0Bh13Dd应用场景https://help.aliyun.com/document_detail/43829.html?spm=a2c4g.11186623.2.21.266e2764YcyQ04#concept-jll-cn4-tdb原文:https://www.cnblogs.com/cag2050/p/11884885.html

windows 下安装Redis【图】

一、下载地址https://github.com/MSOpenTech/redis/releases打开文件夹,内容如下:下面是安装步骤1:以管理员身份打开cmd,依次输入类似下面的地址第二步是解压地址,很重要2:按回车,会出现以下信息,说明服务端安装成功。3:接下来打开另一个cmd窗口,依次输入类似下面的地址回车,若出现以下信息说明连接服务端成功4:环境已经搭建好了,下面来测试下5:常用的操作有以上是对windows下redis的总结。 原文:https://www.cnblog...

使用Redis的分布式Java锁【代码】

通过优锐课的java学习分享中,了解有关分布式锁定以及如何在项目中实现它的更多信息! 什么是分布式锁定?在多线程程序中,不同的线程可能需要访问相同的资源。但是,允许所有线程同时访问资源可能导致争用情况,错误和其他意外行为。为了确保没有两个线程可以同时访问同一资源,并确保以可预测的顺序对资源进行操作,程序员使用一种称为锁的机制。每个线程首先获取锁,然后对资源进行操作,最后将锁释放给其他线程。在Java中,由于...

Redis的快照

博客链接:http://www.cnblogs.com/zhenghongxin/p/8669913.htmlredis 本地持久化到硬盘有两种方式,一是快照(snapshotting),二是只追加文件(append-only file AOF)快照快照,顾名思义可以理解为拍照一样,把整个内存数据映射到硬盘中,保存一份到硬盘,因此恢复数据起来比较快,把数据映射回去即可,不像AOF,一条条的执行操作命令。产生快照的过程:1 执行bgsave命令(此时redis会fork一个子进程,子进程负责生成硬盘文件,父进程负责...

Redis学习手册(内存优化)

自从Redis 2.2之后,很多数据类型都可以通过特殊编码的方式来进行存储空间的优化。其中,Hash、List和由Integer组成的Sets都可以通过该方式来优化存储结构,以便占用更少的空间,在有些情况下,可以省去9/10的空间。 这些特殊编码对于Redis的使用而言是完全透明的,事实上,它只是CPU和内存之间的一个交易而言。如果内存使用率方面高一些,那么在操作数据时消耗的CPU自然要多一些,反之亦然。在Redis中提供了一组配置参数用于...

Redis集群搭建与简单使用【代码】【图】

介绍安装环境与版本用两台虚拟机模拟6个节点,一台机器3个节点,创建出3 master、3 salve 环境。redis 采用 redis-3.2.4 版本。两台虚拟机都是 CentOS ,一台 CentOS6.5 (IP:192.168.31.245),一台 CentOS7(IP:192.168.31.210) 。安装过程1. 下载并解压cd/root/softwarewget http://download.redis.io/releases/redis-3.2.4.tar.gztar-zxvf redis-3.2.4.tar.gz 2. 编译安装cd redis-3.2.4 make && make install3. 将 redis-tr...

Redis初探【代码】【图】

转自菜鸟网络:http://www.runoob.com/redis/redis-data-types.html Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication),LUA脚本(L...

redis代替kafka做缓存队列

前言:刚上线elk一个月左右,使用的kafka作为缓存队列,但是不知道为何,中间发生过好几次,elk突然没数据了,长达好几天都没有, 折腾了好久,好了,过几天又发生同样的状况。经查找,数据是有到达kafka,但是logstash读取不了。无奈之下,只能把kafka 更换为redis。 filebeat配置-------------filebeat: prospectors: - document_type: "web-hkgf-proxy-nginx-access" paths: - /data/logs/...

Redis的持久化-AOF【图】

Redis的持久化AOF模式,以日志的形式记录服务器所处理的每一个写操作,在Redis服务启动之初会读取该文件来重新构建数据库,以保证启动后数据库中的数据是完整的。AOF的优点:1、可以带来更高的数据安全性。2、由于对日志文件的写入操作采用的是append模式,因此在写入过程汇总即使出现宕机,也不会破坏日志文件中已经存在的内容,然而如果我们本次操作写入一半数据就出现系统崩溃,可以在Redis下一次启动之前,通过redis-check-aof...

Memcache,Redis,MongoDB(数据缓存系统)方案对比与分析【图】

mongodb和memcached不是一个范畴内的东西。mongodb是文档型的非关系型数据库,其优势在于查询功能比较强大,能存储海量数据。mongodb和memcached不存在谁替换谁的问题。和memcached更为接近的是redis。它们都是内存型数据库,数据保存在内存中,通过tcp直接存取,优势是速度快,并发高,缺点是数据类型有限,查询功能不强,一般用作缓存。在我们团队的项目中,一开始用的是memcached,后来用redis替代。相比memcached:1、redis具有...

node.js与redis【图】

最近在学习node创建项目,因为一直在用像mysql这样的结构型数据库,想学点新的东西,所以就把数据库换成了redis。redis是非关系型数据库。那关系型数据库跟非关系型数据库有什么区别呢?简单地说,就是一个有表的概念,一个没有。具体的区别自行Google吧。这里我主要介绍一下node.js与redis之间建立连接的过程,就是说如何早node;里面操作redis‘数据库。因此,默认你已经装好这两个软件了。第一步,我们需要打开redis的服务器.打...

Redis优化总结

# 注意在redis.conf中的小聚合数据类型的特殊编码设置(http://carlosfu.iteye.com/blog/2254572)```hash-max-zipmap-entries 64 (hash-max-ziplist-entries for Redis >= 2.6)hash-max-zipmap-value 512 (hash-max-ziplist-value for Redis >= 2.6)list-max-ziplist-entries 512list-max-ziplist-value 64zset-max-ziplist-entries 128zset-max-ziplist-value 64set-max-intset-entries 512```# 使用32位实例将内存受限在4G内,不...

SpringBoot+单机redis【代码】

spring boot-redis集成看教程来的,看起来很简单,但是集成后发现启动失败?WARN 2556 --- [ restartedMain] ationConfigEmbeddedWebApplicationContext :Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException:Error creating bean with name ‘redisTemplate‘ defined in class path resource [org/springframework/boot/aut...

redis配置主从备份以及主备切换方案配置(转)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/gsying1474/article/details/48302565前提:redis中,主从切换场景中,没有绝对的主和从,只有初始化的主和从,然后当主down后,从就变成主了,而主即使连接上,也是从,不会变为主1、redis-server的主备关系: 需要配置的机器,以及主备关系如下 master:10.118.36.10 slave1:10.118.36.7...

第六章· Redis高可用sentinel

sentinel介绍 什么是sentinel? Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案,当用Redis做Master-slave的高可用方案时,假如master宕机了,Redis本身(包括它的很多客户端)都没有实现自动进行主备切换,而Redis-sentinel本身也是一个独立运行的进程,它能监控多个master-slave集群,发现master宕机后能进行自动切换。sentinel的构造 Sentinel 是一个监视器,它可以根据被监视实例的身份和状态来判断应该执行何种动作。sen...

逐步把Nginx及Redis引入项目组之负载均衡技术调研初版总结【代码】【图】

本篇以一个Nginx服务、两个Tomcat服务、一个Redis搭建一个负载均衡环境,因为就一台电脑暂以随机分配客户端请求策略开展,具体工作中推荐以IP地址来实现客户端请求的动态负载策略,省局IP段发过来的请求单独一个Tomcat应对,其余所有分局IP段发来的请求通过有另外一个单独的Tomcat应付。 素材1:一个Redis节点,用来存储Seesion(跨进程共享)及缓存静态常量; 素材2:两个同时运行的Tomcat服务,每个上面运行着一个简单的小程序;...

(九)Net Core项目使用Session及用Redis做分布式【代码】【图】

一、简介1、因为Net Core默认是没有启动Session功能的,如果需要使用,需要通过代码开启。2、本篇说明如果启用默认Session实现,即Session存到内存中。3、本篇扩展说明如何用Redis做Sessoin服务器,实现分布式。 二、开启默认Session功能1、编写一个api,先写Session,再读取Session返回。2、Startup未启动Session功能,查看效果,报错。3、在Startup中添加两处启用Session代码,查看效果,正常。这里有知识点,UseSession需要写在...

scrapy和scrapy-redis框架【代码】【图】

1、scrapyscrapy作为一款优秀的爬虫框架,在爬虫方面有这众多的优点。能快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。 它的主要组件有如下几种:引擎(Scrapy):用来处理整个系统的数据流处理, 触发事务(框架核心)调度器(Scheduler):用来接受引擎发过来的请求, 压入队列中, 并在引擎再次请求的时候返回. 可以想像成一个URL(抓取网页的网址或者说是链接)的优先队列, 由它来决定下一个要...

Redis 四:存储类型之列表类型【代码】

1.lpush num 012345678910依次从左边推入0 - 102.rpush num 012345678910依次从右边推入0 - 103.lrnage num 0 -1 显示num列表中所有的数据结果:1098765432100123456789104.lpop num 从左边删除并弹出一个元素 5.rpop num 从右边删除并弹出一个元素 6.llen num 获取元素个数 7.lrange num 02 获取从左起的3个 8.lrange num -3 -1 获取从右起的3个 9.lrem num 0100 从num列表中,删除所有值为100的元素如:1000234050100658100结果...

redis集群

Redis的集群模式主从通过持久化,在即使数据库重启的情况下,也不会丢失数据,这一台服务器即使出了故障,也不用担心数据丢失出现了复制功能,所以的一主二从的模式,多数据库可以进行读写,一般从数据库用于读和同步从数据库的内容一个主数据库可以有多个从数据库,一个从数据库只能有一个主数据库哨兵模式简单的主从模式,当主数据库宕机的时候,需要手动的把一台从数据库切换为主数据库,这个过程需要手动的干预,费时费力。red...

【redis】redis应用场景,缓存的各种问题【图】

如果你还不知道redis的基本命令与基本使用方法,请看 缓存redis还有另外一个重要的应用领域——缓存引用来自网友的图解释缓存在架构中的位置默认情况下,我们的服务架构如下图,客户端请求service,然后service去读取mysql数据库问题存在于,数据库性能不够用,数据库是整个架构中最重要的一个环节,它在高并发,高写入频次的时候非常容易崩掉,这是一般的数据库本身的特性所决定的,它们的架构模式注定了不可以承受较大的并发量,...

[Redis-Python]发布订阅通过Redis异步发送邮件【代码】

接收订阅#!/usr/bin/env pyhton # coding:utf-8 # @Time : 2020-02-16 21:36 # @Author : LeoShi # @Site : # @File : redis_demo.py # @Software : MacOS Python 3.7import redis# 创建链接 # 返回 b'peigy2020' # redis_connect = redis.Redis(host='172.16.1.111', port=6379, password='password') # decode_responses=True 返回字符串 redis_connect = redis.Redis(host='172.16.1.111', port=6379, password=...

Redis位操作【代码】【图】

setbit key offset value 设置offset对应二进制位上的值getbit key offset 作用:获取值的二进制表示,对应位上的值(从左,从0编号)bitop operation destkey key1 [key2 ...] 对key1,key2..keyN作operation,并将结果保存到 destkey 上。 operation 可以是 AND 、 OR 、 NOT 、 XOR 原文:http://www.cnblogs.com/lindoubao/p/7029224.html

python redis客户端使用lua脚本【代码】

有一个需求,为一个key设置一个field存储时间戳,每当有新数据,判断新数据时间戳是否>之前的时间戳,如果是,更新时间戳,由于依赖中间执行结果,所以使用lua减少客户端和服务端通信次数#!/usr/bin/python # -*- coding: utf-8 -*-import redisr = redis.Redis("127.0.0.1")lua = """ local key = KEYS[1] local field = ARGV[1] local timestamp_new = ARGV[2] -- get timestamp of the key in redis local timestamp_old = redi...

redis 数据结构基础 (二) 链表【代码】

redis中的链表恐怕是最简单的数据结构了,redis链表中总共有3个数据结构:listNode:1 typedef struct listNode { 2struct listNode *prev; //前向节点指针 3struct listNode *next; //后续节点指针 4void *value; //存储的值,采取void*类型,万能类型,但是少了类型信息 5 } listNode;从这个上面可以看出,redis的链表是双向链表list:typedef struct list {listNode *head; //头结点指针listNode *tail; //尾节点指针void *(*du...