• Redis 6.0 除了多线程,别忘了这个牛逼特性!

    我们知道, 很多公司使用Redis做缓存系统,并且很好的提高了数据访问的性能,但是很多企业为了进一步应对热点数据,还是会在redis的client端缓存一部分热点数据,用来应对吃瓜事件。当然,最终Redis 6.0中实现和这个初版的实现差别很大,但是很是显然,从客户端的演化过程中我们还是能看到@antirez对这个特性所在的权衡。Redis实现的是一个服务端协助的客户端缓存,叫做tracking。不开始广播模式时,Redis只会track那些只读命令请求的key,并且只会报告一次失效消息。在尝试之前,你首先需要安装一个redis 6.x的版本,目前时6.0.1。
  • 老弟,Redis 6.0 除了多线程,别忘了这个牛逼特性!

    果不其然,一天后就发布了 6.0.1版,修复了一个allocator的bug,这个bug是为了优化而引入的,现在暂时去掉了。我们知道, 很多公司使用Redis做缓存系统,并且很好的提高了数据访问的性能,但是很多企业为了进一步应对热点数据,还是会在redis的client端缓存一部分热点数据,用来应对吃瓜事件。当然,最终Redis 6.0中实现和这个初版的实现差别很大,但是很是显然,从客户端的演化过程中我们还是能看到@antirez对这个特性所在的权衡。不开始广播模式时,Redis只会track那些只读命令请求的key,并且只会报告一次失效消息。在尝试之前,你首先需要安装一个redis 6.x的版本,目前时6.0.1。
  • 手把手教你玩Git

    2013年,淘宝前端团队开始全面采用Git来做项目管理,我也是那个时候开始接触和使用,从一开始的零接触到现在的重度依赖,真是感叹Git的强大。常用操作所谓实用主义,就是掌握了以下知识就可以玩转Git,轻松应对90%以上的需求。git branch创建、重命名、查看、删除项目分支,通过Git做项目开发时,一般都是在开发分支中进行,开发完成后合并分支到主干。进入Github网站的项目首页,再进入dail
  • 一文详解Ansible自动化运维

    Ansible概述Ansible是近年来越来越火的一款开源运维自动化工具,通过Ansible可以实现运维自动化,提高运维工程师的工作效率,减少人为失误。Ansible通过本身集成的非常丰富的模块可以实现各种管理任务,其自带模块超过上千个。Ansible的角色使用者:如何使用Ansible实现自动化运维?Ansible工具集Ansible工具集包含Inventory、Modules、Plugins和API。Ansible的配置Ansible安装Ansible的安装部署非常简单,以RPM安装为例,其依赖软件只有Python和SSH,且系统默认均已安装。如果希望通过Ansible自动管理设备,应该配置为免交互登录被管理设备。
  • Redis 6.0 除了多线程,别忘了这个牛逼特性!

    当然,最终Redis 6.0中实现和这个初版的实现差别很大,但是很是显然,从客户端的演化过程中我们还是能看到@antirez对这个特性所在的权衡。Redis实现的是一个服务端协助的客户端缓存,叫做tracking。不开始广播模式时,Redis只会track那些只读命令请求的key,并且只会报告一次失效消息。在尝试之前,你首先需要安装一个redis 6.x的版本,目前时6.0.1。
  • 老弟,Redis 6.0 除了多线程,别忘了这个牛逼特性!

    回复“1024”获取2000+道互联网大厂面试题Redis 6.0的新特性也是在一步步的讨论和优化中确定的。我们知道, 很多公司使用Redis做缓存系统,并且很好的提高了数据访问的性能,但是很多企业为了进一步应对热点数据,还是会在redis的client端缓存一部分热点数据,用来应对吃瓜事件。当然,最终Redis 6.0中实现和这个初版的实现差别很大,但是很是显然,从客户端的演化过程中我们还是能看到@antirez对这个特性所在的权衡。不开始广播模式时,Redis只会track那些只读命令请求的key,并且只会报告一次失效消息。在尝试之前,你首先需要安装一个redis 6.x的版本,目前时6.0.1。
  • Shell 脚本的 10 个有用的“面试问题和解答”

    在此,作为shell脚本的附加内容,在本文中我们将从面试的角度解读与Linux Shell相关的问题。在Unix环境下的shell脚本中,0值表示成功执行。因此,在脚本终止前执行一个不带引号的‘exit -1’命令将使脚本中止。例如,创建以下一个名为“linuxmi.sh”的脚本。/bin/bashecho "Hello"exit -1echo "bye"保存文件并执行。# sed '1 d' file.txt上面命令的问题是,它会在标准输出设备上输出不带首行的文件内容。# sed -i '1 d' file.txt3. 你怎么检查一个文本文件中某一行的长度?# cut -c1-10 txt_linuxmi要截取该文件中的第二,第五和第七列。
  • Docker + Webhook 从零实现前端自动化部署

    戳蓝字「前端技术优选」关注我们哦!.基本概念docker 有三个重要的概念镜像容器仓库如果把容器比作轻量的服务器,那么镜像就是创建它的模版,一个 docker 镜像可以创建多个容器,它们的关系好比 JavaScript 中类和实例的关系有两种方式获取镜像Dockerfile 文件创建而成直接使用 dockerHub 或者其他仓库上现有的镜像DockerfileDockerfile 是一个配置文件,类似 .gitlab-ci.yml/package.json,定义了如何生成镜像尝试用 Dockerfile 创建 docker 镜像创建文件首先创建一个 hello-docker 目录,在目录中创建 index.html 和 Dockerfile 文件<!这里列举使用 docker 的几个优点环境统一docker 的出现解决了一个世纪难题:在我电脑上明明是好的 :)开发者可以将开发环境用 doc
  • 老弟,Redis 6.0 除了多线程,别忘了这个牛逼特性!

    当我们不使用RESP3而是使用老的RESP2和Redis通讯时,client本身不支持处理失效消息,所以可以开启一个支持Pub/Sub客户端处理失效消息。不开始广播模式时,Redis只会track那些只读命令请求的key,并且只会报告一次失效消息。在尝试之前,你首先需要安装一个redis 6.x的版本,目前时6.0.1。
  • 中高级开发面试必问的Redis面试题,看这篇就够了!

    Redis 支持很多特性,例如将内存中的数据持久化到硬盘中,使用复制来扩展读性能,使用分片来扩展写性能。/* This is our hash table structure. Every dictionary has two of this as we * implement incremental rehashing, for the old to the new table. */typedef struct dictht { dictEntry **table; unsigned long size; unsigned long sizemask; unsigned long used;} dictht;typedef struct dictEntry { void *key; union { void *val; uint64_t u64; int64_t s64; double d; } v; struct dictEntry *next;} dictEntry;Redis 的字典 dict 中包含两个哈希表 dictht,这是为了方便进行 rehash 操作。在扩容时,将其中一个 dictht 上的键值对 rehash 到另一个 dictht 上面,完成之后释放空间并交换两个 dictht 的角色。
  • Git从入门到放不下

    2013年,淘宝前端团队开始全面采用Git来做项目管理,我也是那个时候开始接触和使用,从一开始的零接触到现在的重度依赖,真是感叹Git的强大。Git的api很多,但其实平时项目中90%的需求都只需要用到几个基本的功能即可,所以本文将从实用主义和深入探索2个方面去谈谈如何在项目中使用Git,一般来说,看完实用主义这一节就可以开始在项目中动手用。git branch创建、重命名、查看、删除项目分支,通过Git做项目开发时,一般都是在开发分支中进行,开发完成后合并分支到主干。
  • Spring Boot “内存泄漏”?看看美团大牛是如何排查的

    所以猜测是使用Native Code申请内存所导致的问题。带着疑问,笔者直接看了一下Spring Boot Loader那一块的源码。发现Spring Boot对Java JDK的InflaterInputStream进行了包装并且使用了Inflater,而Inflater本身用于解压JAR包的需要用到堆外内存。于是笔者以为找到了原因,立马向Spring Boot社区反馈了这个bug。也就是说Spring Boot依赖于GC释放堆外内存。带着这样的怀疑,笔者把Inflater进行包装在Spring Boot Loader里面替换成自己包装的Inflater,在finalize进行打点监控,结果finalize方法确实被调用了。这时,再返过来看gperftools的内存分布情况,发现使用Spring Boot时,内存使用一直在增加,突然某个点内存使用下降了好多。
  • 面试必需要明白的 Redis 分布式锁实现原理!

    因为redis版本在2.6.12之前,set是不支持nx参数的,如果想要完成一个锁,那么需要两条命令:1.setnxTestuuid2.expireTest30即放入Key和设置有效期,是分开的两步,理论上会出现1刚执行完,程序挂掉,无法保证原子性。Redisson普通的锁实现源码主要是RedissonLock这个类,还没有看过它源码的盆友,不妨去瞧一瞧。红锁并非是一个工具,而是redis官方提出的一种分布式锁的算法。就在刚刚介绍完的redisson中,就实现了redLock版本的锁。RedLock作者指出,之所以要用独立的,是避免了redis异步复制造成的锁丢失,比如:主节点没来的及把刚刚set进来这条数据给从节点,就挂了。
  • Linux 生产环境上,最常用的一套 “ Sed ” 技巧

    sed 命令应用广泛,使用简单,是快速文本处理的利器。本篇不去关注sed的高级功能,仅对常用的一些操作,进行说明。一个简单的入门如图,一个简单的 sed 命令包含三个主要部分:参数、范围、操作。范围1,4 表示找到文件中1,2,3,4行的内容。比如,以下两个命令就是等同的:cat filesed -n 'p' file除了打印,还有以下操作,我们来说常用的。d 对匹配内容进行删除。sed -n '2p' /etc/group表示打印group文件中的第二行。常用的就是精确替换。“&” 表明将查找的数据使用””包围起来。e 表示将输出的每一行,执行一个命令。这是非常危险的。
  • Redis的7000字笔记总结,超详细!

    Redis 不仅仅支持简单的 key - value 类型的数据,同时还提供 list,set,zset,hash 等数据结构的存储Redis 支持数据的备份,即 master - slave 模式的数据备份Redis 优势性能极高 – Redis 读的速度是 110000 次 /s, 写的速度是 81000 次 /s 。原子性 - Redis 的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。string 是二进制安全的。也就是说 redis 的 string 可以包含任何数据。string 类型是 redis 最基本的数据类型,string 类型的值最大能存储 512 MB。Redis hash 是一个 string 类型的 key 和 value 的映射表,hash 特别适合用于存储对象。list 内的元素是可重复的。setredis 的 set 是字符串类型的无序集合。
  • Redis 6.0 客户端缓存特性及实践

    Redis 6.0 的新特性也是在一步步的讨论和优化中确定的。I just released Redis 6.0.1. Unfortunately there was a bug in Redis 6.0.0 introduced just a few days before the release, that only happens when using the non-default allocator . Optimization reverted, 6.0.1 released. Sorry for the issue.本文主要关注Client side caching这一特性。一年前,当 @antirez 参加完纽约 Redis 大会后,5:30 就在旅店中醒来了,面对曼哈顿街头的美丽景色,在芸芸众生中思索 Redis 的未来,包括客户端缓存。Redis 实现的是一个服务端协助的客户端缓存,叫做tracking。当我们不使用 RESP3 而是使用老的 RESP2 和 Redis 通讯时,client 本身不支持处理失效消息,所以可以开启一个支持 Pub/Sub 客户端处理失效消息。不开始广播模式时,Redis 只会 track 那些只读命令请求的 key,并且只会报告一次失效消息。
  • 面试题:如何更新 Go Module 项目的依赖 — 解决问题的方法很重要

    比如这个问题通过关键词 go mod update direct dependencies` 搜索。第 1、2 个就是相关的。不过,对于更新项目所有的依赖,有一个更简便的方法,那就是直接 go get -u ./…。知识点学习以上涉及到的知识点主要是 go list 命令的使用。Go 命令的学习,最权威的文档自然是官方文档。
公告

《从零开始开发BBS》课程上线啦,快来跟着我一步步搭建属于你的BBS吧。

课程地址:https://www.shiyanlou.com/courses/1436
9折优惠邀请码: ZHwfIjb1

该课程会带领大家一步步的了解并熟悉Go语言开发,如果你是一个Go语言初学者,或者正准备学习Go语言,那么这个课程非常适合你。如果你熟练掌握了本课程中的知识点,相信你就已经入门Go语言开发,并能胜任日常的开发工作了。