Redis

分布式之分布式事务、分布式锁、分布式Session

拟墨画扇 提交于 2021-02-17 12:48:35
点击上方 " 程序员小乐 "关注, 星标或置顶一起成长 每天凌晨00点00分, 第一时间与你相约 每日英文 It is our choices... that show what we truly are, far more than our abilities.J. K. Rowling . 决定我们一生的,不是我们的能力,而是我们的选择。 每日掏心 话 没有不能改变的事,因为自己改变了,状况也就跟着转变。 来自 : ava未来的大佬 | 责编:乐乐 链接:cnblogs.com/heqiyoujing/p/10917102.html 程序员小乐(ID:study_tech) 第 959 次推文 图源:百度 往日回顾: 程序员吐槽:入职两周,怀疑自己进了假百度!跟传说中完全不一样 正文 一、分布式session   session 是啥?浏览器有个 cookie,在一段时间内这个 cookie 都存在,然后每次发请求过来都带上一个特殊的 jsessionid cookie ,就根据这个东西,在服务端可以维护一个对应的 session 域,里面可以放点数据。   一般的话只要你没关掉浏览器,cookie 还在,那么对应的那个 session 就在,但是如果 cookie 没了,session 也就没了。常见于什么购物车之类的东西,还有登录状态保存之类的。   这个不多说了,懂

分布式之分布式事务、分布式锁、接口幂等性、分布式session

前提是你 提交于 2021-02-17 12:28:51
一、分布式session   session 是啥?浏览器有个 cookie,在一段时间内这个 cookie 都存在,然后每次发请求过来都带上一个特殊的 jsessionid cookie ,就根据这个东西,在服务端可以维护一个对应的 session 域,里面可以放点数据。   一般的话只要你没关掉浏览器,cookie 还在,那么对应的那个 session 就在,但是如果 cookie 没了,session 也就没了。常见于什么购物车之类的东西,还有登录状态保存之类的。   这个不多说了,懂 Java 的都该知道这个。   单块系统的时候这么玩儿 session 没问题,但是你要是分布式系统呢,那么多的服务,session 状态在哪儿维护啊?   (1)完全不用 session   使用 JWT Token 储存用户身份,然后再从数据库或者 cache 中获取其他的信息。这样无论请求分配到哪个服务器都无所谓   (2)tomcat + redis   这个其实还挺方便的,就是使用 session 的代码,跟以前一样,还是基于 tomcat 原生的 session 支持即可,然后就是用一个叫做 Tomcat RedisSessionManager 的东西,让所有我们部署的 tomcat 都将 session 数据存储到 redis 即可。   在 tomcat 的配置文件中配置:

Python面试题之Python面试题汇总

三世轮回 提交于 2021-02-17 12:24:25
参考地址 目录 Python基础篇 1:为什么学习Python 2:通过什么途径学习Python 3:谈谈对Python和其他语言的区别 Python的优势: 4:简述解释型和编译型编程语言 5:Python的解释器种类以及相关特点? 6:位和字节的关系 7:b、B、KB、MB、GB的关系 8:PE8规范 9:通过代码实现如下转换(进制之间转换) 10:请编写一个函数实现将IP地址转换成一个整数 11、python递归的最大层数?998 12:求结果(and or or) 运算符 13 :ascii、unicode、utf-8、gbk 区别 14:字节码和机器码的区别 15:三元运算写法和应用场景? 16:Python3和Python2的区别? 17:用一行代码实现数值交换 18:Python3和Python2中int和long区别 19:xrange和range的区别 20:文件操作时:xreadlines和readlines的区别? 21: 列列举布尔值为False的常见值? 22. 字符串、列表、元组、字典每个常用的5个方法? 23、 lambda表达式格式以及应用场景? 24. pass的作用 25. *arg和**kwarg作用 26. is和==的区别 27:谈谈Python的深浅拷贝?以及实现方法和应用场景。 28. Python垃圾回收机制? 29.

redis系列之------简单的动态字符串(SDS)

眉间皱痕 提交于 2021-02-17 11:38:43
前言 Redis 没有直接使用 C 语言传统的字符串表示(以空字符结尾的字符数组,以下简称 C 字符串), 而是自己构建了一种名为简单动态字符串(simple dynamic string,SDS)的抽象类型, 并将 SDS 用作 Redis 的默认字符串表示。 个人感觉 SDS 类似于Java的 ArrayList, 大家可以拿两者对比一些,谁的效率更加高一点。 SDS定义 1 struct sdshdr { 2 3 // 记录 buf 数组中已使用字节的数量 4 // 等于 SDS 所保存字符串的长度 5 int len; 6 7 // 记录 buf 数组中未使用字节的数量 8 int free ; 9 10 // 字节数组,用于保存字符串 11 char buf[]; 12 13 }; 这里注意一下。C语言的char是 占一个字节的。 不像Java的char占两个字节。也就是只有八位,-127 - 128。 SDS相比于C字符串的优势 1. 常数复杂度获取字符串长度 这个比较好理解,因为SDS里面有一个字段为len,可以直接获取长度 2. 减少修改字符串时带来的内存重分配次数 因为传统的c字符串,不会自动扩容。而且其内存大小就等于字符串长度+1,因此,每修改一次字符串,都要重新分配一次内存,非常的耗费时间 SDS 会自动扩容,并且会进行空间预分配。比如现在有一个 Hello

一文读懂Redis持久化方式

ぃ、小莉子 提交于 2021-02-17 08:51:28
Redis持久化 RDB快照 在默认情况下,Redis将内存数据库快照保存到dump.rdb的二进制文件中。 可以对Redis进行设置,让它在“N秒内数据集至少有N个改动”, 这一条件被满足时,自动保存一次数据集。比如说:让Redis满足“60秒内至少有1000个键被改动”这一个条件时,自动保存一次数据集。 save 60 1000 除了在配置文件中使用save关键字设置RDB快照,还可以在命令行中手动执行命令生成RDB快照,进入redis客户端执行命令save或bgsave可以生成dump.rdb文件。 每次执行命令都会将所有redis内存快照保存到一个rdb文件里,并覆盖原有的rdb快照文件。 save是同步命令,bgsave是异步命令,bgsave会从redis主进程fork出一个子进程专门用来生成rdb二进制文件。 AOF(append only file) 快照功能并不是非常durable,如果redis因为某些原因而造成故障停机,那么服务器将丢失最近写入且未保存到快照中的那些数据。从1.1版本,redis增加了一种完全durable的方式:AOF持久化,将修改的每一条指令记录进appendonly.aof中。修改配置文件来打开aof功能: appendonly yes 打开aof功能,每当redis执行一个改变数据集的命令时,这个命令就会追加到aof文件的末尾。这样的话

Redis 的各项功能解决了哪些问题?

纵饮孤独 提交于 2021-02-17 08:50:41
作者丨blackheart 先看一下Redis是一个什么东西 官方简介解释到:Redis是一个基于BSD开源的项目,是一个把结构化的数据放在内存中的一个存储系统,你可以把它作为数据库,缓存和消息中间件来使用。 同时支持strings,lists,hashes,sets,sorted sets,bitmaps,hyperloglogs和geospatial indexes等数据类型。 它还内建了复制,lua脚本,LRU,事务等功能,通过redis sentinel实现高可用,通过redis cluster实现了自动分片。以及事务,发布/订阅,自动故障转移等等。 综上所述,Redis提供了丰富的功能,初次见到可能会感觉眼花缭乱,这些功能都是干嘛用的?都解决了什么问题?什么情况下才会用到相应的功能?那么下面从零开始,一步一步的演进来粗略的解释下。 1 从零开始 最初的需求非常简单,我们有一个提供热点新闻列表的api:http://api.xxx.com/hot-news,api的消费者抱怨说每次请求都要2秒左右才能返回结果。 随后我们就着手于如何提升一下api消费者感知的性能,很快最简单粗暴的第一个方案就出来了:为API的响应加上基于HTTP的缓存控制 cache-control:max-age=600 ,即让消费者可以缓存这个响应十分钟。

Apache POI 与 OOB-XXE 组合实战

感情迁移 提交于 2021-02-17 06:51:30
声明 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,雷神众测以及文章作者不为此承担任何责任。 雷神众测拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经雷神众测允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。 前言 在一次项目中偶然发现了一处excel上传功能,恰巧碰到Apache POI与OOB-XXE两种漏洞同时利用成功的情况,实属幸运,特别将这次渗透过程记录分享给大家,希望给大家启发,不足之处也请指教。 No.1 背景介绍 Apache POI Excel、Word、pdf上传功能在一些财务、办公、数据分析系统中较为常见,在其他一些需要批量导入数据的系统中也是较为常用的功能。开发人员也大多使用Apache POI 的java类库来解析文件,关于POI的XXE漏洞在目前公开的信息中,有下面的CVE ,CVE-2014-3529、CVE-2016-5000、CVE-2017-5644,其影响版本大多为3.15以前版本,具体信息大家可根据CVE进行查询。 OOB-XXE OOB-XXE(Out-of-band XML External Entity),全称带外XML外部实体,与很多其他漏洞一样XXE也分为带内和带外。带内XXE攻击更为常见

XXL-SSO分布式单点登录框架

梦想的初衷 提交于 2021-02-17 06:40:56
一、简介 1.1 概述 XXL-SSO 是一个分布式单点登录框架。只需要登录一次就可以访问所有相互信任的应用系统。 拥有"轻量级、分布式、跨域、Cookie+Token均支持、Web+APP均支持"等特性。现已开放源代码,开箱即用。 1.2 特性 简洁:API直观简洁,可快速上手; 轻量级:环境依赖小,部署与接入成本较低; 单点登录:只需要登录一次就可以访问所有相互信任的应用系统。 分布式:接入SSO认证中心的应用,支持分布式部署; HA:Server端与Client端,均支持集群部署,提高系统可用性; 跨域:支持跨域应用接入SSO认证中心; Cookie+Token均支持:支持基于Cookie和基于Token两种接入方式,并均提供Sample项目; Web+APP均支持:支持Web和APP接入; 实时性:系统登陆、注销状态,全部Server与Client端实时共享; CS结构:基于CS结构,包括Server"认证中心"与Client"受保护应用"; 记住密码:未记住密码时,关闭浏览器则登录态失效;记住密码时,支持登录态自动延期,在自定义延期时间的基础上,原则上可以无限延期; 路径排除:支持自定义多个排除路径,支持Ant表达式。用于排除SSO客户端不需要过滤的路径; 1.3 下载 源码仓库地址 源码仓库地址 Release Download https://github.com

Add Expiry to Redis Cache

て烟熏妆下的殇ゞ 提交于 2021-02-17 05:59:06
问题 I have implemented Redis Cache in my C# project. I would just like to know how i can overload my Get<T> to also accept a timeout value. I figured this would be the best way to add an expiry to my redis cache provider. Here is my code Below: public async Task<T> GetAsync<T>(string key) { return (await _cacheClient.Db0.GetAsync<T>(key).ConfigureAwait(false)); } /// <summary> /// Fetch item from cache /// </summary> /// <typeparam name="T">Return Type</typeparam> /// <param name="key">Key

bat脚本常用命令

Deadly 提交于 2021-02-17 04:11:20
意气风发啊 骑上我快乐的小摩托 良心公众号啊! 我上墙了 你开始了 嚯嚯嚯嚯嚯 哈哈哈哈哈 皮皮虾我们走 可乐在厨房 红牛在冰箱 6666666 看弹幕,点 关注 " 我相信这不是我一个人的经历:傍晚时分,你坐在屋檐下,看着天慢慢地黑下去,心里寂寞而凄凉,感到自己的生命被剥夺了。当时我是个年轻人,但我害怕这样生活下去,衰老下去。在我看来,这是比死亡更可怕的事。 ——《沉默的大多数》 " title: bat脚本常用命令 date: 2019-11-14 20:23:36 tags: windows script categories: windows script Author:闫玉良 bat 脚本?如果不是从事微软开发相关工作的人员,是不是感觉很耳熟但是又好像不熟悉?还等什么,一睹为快 bat 脚本是 windows 上所用的脚本,我们经常使用的 cmd 一些命令就可以使用。也许你会说为什么不使用 powershell 脚本?因为古老的一些服务器上面没有安装 powershell 你信不信?比如 windows server 2003。 很荣幸,我遇到了,没有什么办法,只能查阅相关资料迎难而上了!脚本其实很简单,下面做一个记录,供大家有需要时获取: 1.设置变量 设置变量使用 SET 关键字,语法如下: SET 变量名=变量值 1. 变量名与变量值一定要紧挨等于号!!!