Redis

redis入门指南(一) ——简介及入门相关

别等时光非礼了梦想. 提交于 2021-01-16 07:38:41
redis入门指南第二版 学习记录   以下绝大部分内容取材于《redis入门指南》,部分结合个人知识,实践后得出。   只记录重要,明确,属于新知的相关内容,杜绝冗余和重复。 简介   1、key-value型数据库,单线程,基于内存的存取,支持为每一个键设置生存时间。   2、支持丰富的数据类型,字符串,散列,列表,集合,有序集合。 启动、停止等客户端操作   3、安装过程不再赘述   4、redis可执行文件说明 文件名 说明 redis-server Redis服务器 redis-cli Redis命令行客户端 redis-benchmark Redis性能测试工具 redis-check-aof AOF文件修复工具 redis-check-dump RDB文件检查工具 redis-sentinel Sentinel服务器(2.8v以后)            常用的一般是redis-server与redis-cli   5、启动     redis-server 直接启动     redis-server --port 6380 自定义端口号启动(默认6379)     初始化脚本启动,可随系统启动而启动,建议百度,需要时学习。   6、停止     redis有可能将内存中的数据同步到硬盘中,所以强行终止可能会导致数据丢失。     正确方式应该向redis发送命令:

对标阿里P7的Java后端开发面试总结,搞定90%以上的技术面【2021最新!】

本秂侑毒 提交于 2021-01-15 19:10:34
前言 本文档是从阿里面试官整理的Java面试题;包含了Java基础、Java集合容器、Java异常、并发编程、JVM、Spring、Spring MVC、Spring Boot、Spring Cloud、MyBatis、Redis、MySQL数据库、消息中间件MQ与RabbitMQ、Dubbo、Linux、Tomcat、ZooKeeper、Netty、 架构设计&分布式&数据结构与算法等等,都是互联网大厂的面试真题,已经有粉丝靠这份PDF拿下众多大厂的offer。 每一份面试文档的左侧都有文档大纲,这也是为了方便大家阅读,特别整理的;文章限于篇幅,故这里只是部分的截图展示。 有需要答案解析的朋友可以关注公众号: 麒麟改bug 。 小编这篇分享篇幅可能有点长,观看的朋友可以先了解一下目录 JavaOOP面试题——108道 Java集合/泛型面试题——24道 Java异常面试题——8道 Java中的IO与NIO面试题——15道 Java反射面试题——10道 Java序列化面试题——10道 Java注解面试题——2道 多线程&并发面试题——108道 JVM面试题——87道 Mysql面试题——83道 Redis面试题——50道 Memcached面试题——24道 MongoDB面试题——95道 String面试题——131道 Spring Cloud面试题——35道

基于prometheus监控redis实战

纵然是瞬间 提交于 2021-01-15 15:37:11
安装准备 redis服务器:172.22.3.163:6379 prometheus主机已安装prometheus和grafnana : 参考: centos7.8安装prometheus和grafana实战 本实践基于prometheus对已存在redis服务进行监控。 相关安装文件 https://github.com/oliver006/redis_exporter/releases/download/v1.15.1/redis_exporter-v1.15.1.linux-amd64.tar.gz 安装redis_exporter 在redis服务器安装redis_exporter # cd /opt/ # wget https://github.com/oliver006/redis_exporter/releases/download/v1.15.1/redis_exporter-v1.15.1.linux-amd64.tar.gz # tar -zxf redis_exporter-v1.15.1.linux-amd64.tar.gz # cp redis_exporter-v1.15.1.linux-amd64/redis_exporter /usr/local/bin 创建service并设置自动启动 ## 创建service # vi /usr/lib

对标阿里P7的Java后端开发面试总结,搞定90%以上的技术面【2021最新!】

自古美人都是妖i 提交于 2021-01-15 15:35:35
前言 本文档是从阿里面试官整理的Java面试题;包含了Java基础、Java集合容器、Java异常、并发编程、JVM、Spring、Spring MVC、Spring Boot、Spring Cloud、MyBatis、Redis、MySQL数据库、消息中间件MQ与RabbitMQ、Dubbo、Linux、Tomcat、ZooKeeper、Netty、 架构设计&分布式&数据结构与算法等等,都是互联网大厂的面试真题,已经有粉丝靠这份PDF拿下众多大厂的offer。 每一份面试文档的左侧都有文档大纲,这也是为了方便大家阅读,特别整理的;文章限于篇幅,故这里只是部分的截图展示。 有需要答案解析的朋友可以关注公众号: 麒麟改bug 。 小编这篇分享篇幅可能有点长,观看的朋友可以先了解一下目录 JavaOOP面试题——108道 Java集合/泛型面试题——24道 Java异常面试题——8道 Java中的IO与NIO面试题——15道 Java反射面试题——10道 Java序列化面试题——10道 Java注解面试题——2道 多线程&并发面试题——108道 JVM面试题——87道 Mysql面试题——83道 Redis面试题——50道 Memcached面试题——24道 MongoDB面试题——95道 String面试题——131道 Spring Cloud面试题——35道

【Redis】Redis 发布订阅

≡放荡痞女 提交于 2021-01-15 07:03:21
Redis 发布订阅介绍   Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。   Redis 客户端可以订阅任意数量的频道。   下图展示了频道 channel1 , 以及订阅这个频道的三个客户端 —— client2 、 client5 和 client1 之间的关系:        当有新消息通过 PUBLISH 命令发送给频道 channel1 时, 这个消息就会被发送给订阅它的三个客户端:      实例   以下实例演示了发布订阅是如何工作的。在实例中创建了订阅频道名为 redisChat : 1 127.0 . 0.1 : 6379 > SUBSCRIBE redisChat 2 Reading messages... (press Ctrl- C to quit) 3 1 ) " subscribe " 4 2 ) " redisChat " 5 3 ) (integer) 1   现在,先重新开启个 redis 客户端,然后在同一个频道 redisChat 发布两次消息,订阅者就能接收到消息。 1 127.0 . 0.1 : 6379 > PUBLISH redisChat " Redis is a great caching technique " 2 (integer) 1 3 127.0 . 0

一个爬虫工程师的成长之路

折月煮酒 提交于 2021-01-15 06:21:39
大数据流行的今天,网络爬虫成为了获取数据的一个重要手腕。但要学习好爬虫并没有那么简单。由于学习点、学习方向等实在是太多了,而且它涉及到计算机网络、后端编程、前端开发、App 开发与逆向、网络安全、数据库、自动化运维、机器学习、数据分析等各个方向的内容,它像一张大网一样,把如今一些主流的技术栈都囊括在内。正由于设计内容的多样性,需要学习的东西也变得十分零散和杂乱。很多初学者找不到具体的学习方向。学习过程中遇到反爬、JS渲染等问题,也不知道该如何处理。基于这些年的爬虫经验,梳理了一下作为一个初学者,需要掌握的内容。 语言的选择 C语言历史悠久,Java横行当下,大多初学者可能在大学都接触过这两门语言。但他们都有缺点,C语言学习难度大,Java太复杂,效率也有点底,Python则刚刚好。所以,本文所讲内容均以Python为开发语言。 初学爬虫 一般的网站,常常不带任何反爬措施。比方某某博客站点,我们要爬全站的话就顺着列表页爬到文章页,再把文章的时间、作者、正文等信息爬下来就能够了。 那代码怎样写呢?用 Python 的 requests 等库就够了,写一个根本的逻辑,顺着把一篇篇文章的源码获取下来,解析的话用 XPath、BeautifulSoup、PyQuery 或者正则表达式,或者粗暴的字符串匹配把想要的内容抠出来,再加个文本写入存下来就完事了。 代码很简单,就几个办法调用

Redis二进制反转算法分析

烂漫一生 提交于 2021-01-15 03:41:38
在 redis 源码中 dictScan 算法中用到了用到了非常经典的二进制反转算法,该算法对二进制的反转高效而实用,同时对于理解位运算也有非常大的帮助。先呈现源码: /* Function to reverse bits. Algorithm from: * http://graphics.stanford.edu/ ~seander/bithacks.html#ReverseParallel */ static unsigned long rev(unsigned long v) { unsigned long s = 8 * sizeof (v); // bit size; must be power of 2, 此处为32 unsigned long mask = ~ 0 ; // 11111111111111111111111111111111 while ((s >>= 1 ) > 0 ) { // 循环5次 mask ^= (mask << s); // 取得想要局部对换的掩码 // 左移s位并保留低位,右移s位并保留高位,然后两部分或运算 // 这里是实现移位的精华所在,结合下面打印信息有助于理解 v = ((v >> s) & mask) | ((v << s) & ~ mask); } return v; } 源码的总体思路是

redis分布式锁01

偶尔善良 提交于 2021-01-15 02:26:38
在单体项目中,如果要保证程序只有一个线程进入,使用synchronized锁住代码即可,不过在分布式的情况下,synchronized只能锁住本地对象,如果其他的请求进入,synchronized是没有用的,使用redis的分布式锁; 代码: public Map<String, List<Catelog2Vo>> getCatalogJsonFromDbWithRedisisLock() { //1.站分布式锁 redis占坑 //NS 如果设置的值没有的话就创建 成功返回ok 在创建的时候必须创建和设置锁的过期时间一起原子操作,才能万无一失 String uuid = UUID. randomUUID ().toString(); Boolean lock = stringRedisTemplate .opsForValue().setIfAbsent( "lock" , uuid, 300 , TimeUnit. SECONDS ); if (lock) { //设置锁的过期时间,不过如果在这里没设置之前就断电了,就麻烦了 // stringRedisTemplate.expire("lock",300,TimeUnit.SECONDS); //站所成功 Map<String, List<Catelog2Vo>> dataFromDb; try { dataFromDb =

详谈分布式最终一致性

北慕城南 提交于 2021-01-14 13:34:59
“什么是分布式系统?这取决于看系统的角度。对于坐在键盘前使用IBM个人电脑的人来说,电脑不是一个分布式的系统。但对于在电脑主板上趴着的虫子来说,这台电脑就是一个分布式系统。” —— Leslie Lamport 引言 分布式一致性问题随处可见,任何一个实体/联接模型,都可能存在分布式一致性问题。如果把单机拆开来看,CPU、内存、I/O设备组成的机箱本身就是一个小型的分布式系统,需要确保对这个系统操作的最终一致性。幸运的是这部分工作已经交给操作系统和数据库软件来帮我们完成。而在大型分布式企业级应用中,分布式最终一致性方案需要根据系统自身特点量身定制,是系统设计的重点。近年来随着沪江业务的快速增长和微服务治理推广,本地ACID事务早已不能满足业务和系统的发展需求。大部分业务流程都需要跨多微服务的调用来协作完成,并且要求系统确保分布式最终一致性。 可以选择分布式事务框架方案,目前主流的分布式事务框架大致可分为3类实现 : 基于XA协议的两阶段提交(2PC)方案 基于支付宝最早提出的TCC(Try、Confirm、Cancel)方案 基于ebay最早提出的消息队列异步确保方案 此外还有较轻的解决方案,业务系统可以根据自身需要,选择通过幂等/重试、状态机、恢复日志、异步校验等技术来确保最终一致性。 重型武器 采用分布式事务框架的方案,最终一致性由分布式事务框架保证

session共享解决方案

风流意气都作罢 提交于 2021-01-14 06:00:21
1、 为什么要使用Session共享? 稍大一些的网站,通常都会有好几个服务器,每个服务器运行着不同功能的模块,使用不同的二级域名,而一个整体性强的网站,用户系统是统一的,即一套用户名、密码在整个网站的各个模块中都是可以登录使用的。各个服务器共享用户数据是比较容易实现的,只需要在后端放个数据库服务器,各个服务器通过统一接口对用户数据进行访问即可。但还存在一个问题,就是用户在这个服务器登录之后,进入另一个服务器的别的模块时,仍然需要重新登录,这就是一次登录,全部通行的问题,映射到技术上,其实就是各个服务器之间如何实现共享 SESSION 数据的问题。 2、 了解session工作原理 在解决问题之前,先来了解一下 PHP SESSION 的工作原理。在客户端(如浏览器)登录网站时,被访问的 PHP 页面可以使用 session_start() 打开 SESSION,这样就会产生客户端的唯一标识 SESSION ID(此 ID 可通过函数 session_id() 获取/设置)。SESSION ID 可以通过两种方式保留在客户端,使得请求不同的页面时,PHP 程序可以获知客户端的 SESSION ID;一种是将 SESSION ID 自动加入到 GET 的 URL 中,或者 POST 的表单中,默认情况下,变量名为 PHPSESSID;另一种是通过 COOKIE,将 SESSION