redis
文章平均质量分 89
秃头哥编程
这个作者很懒,什么都没留下…
展开
-
利用Redis实现防止接口重复提交功能
在划水摸鱼之际,突然听到有的用户反映增加了多条一样的数据,这用户立马就不干了,让我们要马上修复,不然就要投诉我们。这下鱼也摸不了了,只能去看看发生了什么事情。据用户反映,当时网络有点卡,所以多点了几次提交,最后发现出现了十几条一样的数据。只能说现在的人都太心急了,连这几秒的时间都等不了,惯的。心里吐槽归吐槽,这问题还是要解决的,不然老板可不惯我。其实想想就知道为啥会这样,在网络延迟的时候,用户多次点击,最后这几次请求都发送到了服务器访问相关的接口,最后执行插入。既然知道了原因,该如何解决。当时我原创 2021-12-14 21:59:55 · 6879 阅读 · 10 评论 -
数据库面试题汇总--非关系型数据库
1、redis 的底层数据结构有哪些(1)字符串(2)哈希(3)链表(4)set集合(5)zset有序集合2、redis 中的 SDS 和 C 语言中的字符串有什么区别,优点是什么SDS(Simple Dynamic String,简单动态字符串)是 Redis 底层所使用的字符串表示。SDS比C语言的字符串多了一个SDSHDR表头,存放了free(空闲空间)、len(已用空间)、buf(缓冲区)。优点:(1)获取字符串长度更快。C语言获取字符串需要遍历整个字符串,时间复杂度为O(N),转载 2021-03-08 21:28:19 · 592 阅读 · 0 评论 -
Redis哨兵(Sentinel)模式
主从切换技术的方法是:当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用。这不是一种推荐的方式,更多时候,我们优先考虑哨兵模式。一、哨兵模式概述哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行。其原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redi...原创 2018-08-28 22:39:39 · 973 阅读 · 0 评论 -
Redis常用技术-----使用Lua语言
Redis命令的计算能力并不算很强大,使用Lua语言则可以在很大程度上弥补Redis的这个不足。在Redis中,执行Lua语言是原子性,也就是说Redis执行Lua的时候是不会被中断的,具备原子性,这个特性有助于Redis对并发数据一致性的支持。Redis支持两种方法运行脚本,一种是直接输入一些Lua语言的程序代码,另一种是将Lua语言编写成文件。在实际应用中,一些简单的脚本可以采取第一种方式...原创 2018-08-20 22:10:57 · 20656 阅读 · 7 评论 -
Redis主从同步
Redis的性能很好,但在某些情况下还是不能满足我们的需求,比如过多的用户进入主页,导致Redis被频繁访问,此时就存在大量的读操作。在一些秒杀场景中,一瞬间有成千上万的读请求到达Redis服务器,显然单靠一台Redis服务器是不够的。一些服务网站对安全性有较高的要求,当主服务器不能工作的时候,需要从服务器代替原来的主服务器,作为灾备,以保证系统可以正常运行。因此更多的时候我们希望读写分离,读写分...原创 2018-08-27 21:03:39 · 357 阅读 · 0 评论 -
Redis常用技术----超时命令
Java中有GC,可以自动回收不再使用的Java对象。同样,Redis也是基于内存而运行的数据集合,也存在着对内存垃圾的回收和管理的问题。对于Redis,del命令可以删除一些键值对,所以Redis比JVM更灵活。于此同时,当内存运行空间满了之后,它还会按照回收机制去自动回收一些键值对,这和JVM有一定相似之处。但是当进行垃圾回收的时候,又有可能引发系统停顿,因此选择恰当的回收机制和回收时间将...原创 2018-08-20 07:14:09 · 755 阅读 · 0 评论 -
Redis常用技术-----发布订阅
银行卡消费的时候,银行往往会通过微信、短信或邮件通知用户交易的详细信息,这便是发布订阅模式。我们可以使用下面的命令进行模拟先打开一个客户端1,输入命令SUBSCRIBE chat表示客户端1订阅一个名为chat的渠道,之后打开客户端2,输入命令publish chat "Hello World!"这个时候客户端2就向渠道chat发送了一条消息,再看客户端1,可以...原创 2018-08-20 07:11:46 · 563 阅读 · 0 评论 -
Redis内存回收策略
Redis会因为内存不足而产生错误,也会因为回收过久而导致系统长期的停顿,因此了解掌握Redis的回收策略十分重要。当Redis的内存达到规定的最大值时,可以进行配置进行淘汰键值,并且将一些键值对进行回收。我们打开Redis安装目录下的redis.conf文件。配置文件中有这么一段话# Set a memory usage limit to the specified amount o...原创 2018-08-27 00:21:07 · 501 阅读 · 0 评论 -
Redis常用技术-----流水线(Pipelined)
在事务中Redis提供了队列,可以批量执行任务,这样性能就比较高,但使用multi…exec事务命令是有系统开销的,因为它会检测对应的锁和序列化命令。有时我们希望在没有任何附加条件的情况下使用队列批量执行一系列命令,这时可以使用Redis的流水线(pipelined)技术。实际中Redis的读写速度十分快,而系统的瓶颈往往是在网络通信中的延时。比如当命令1在T1时刻发送到Redis服务器后,服...原创 2018-08-19 15:51:47 · 9327 阅读 · 2 评论 -
Redis常用技术----事务
一、事务Redis的事务是使用MULTI-EXEC的命令组合,使用它可以提供两个重要的保证:事务是一个被隔离的操作,事务中的方法都会被Redis进行序列化并按顺序执行,事务在执行的过程中不会被其他客户端发生的命令所打断。事务是一个原子性的操作,它要么全部执行,要么全部不执行。在Redis中使用事务会经过三个过程:开启事务命令进入队列执行事务 命令 说明...原创 2018-08-19 12:30:26 · 535 阅读 · 2 评论 -
Redis入门之六大数据类型
一、启动redis进入redis文件夹下,输入如下命令启动redissrc/redis-server ./redis.conf启动之后和客户端进行连接src/redis-cli会出现这么一个东西127.0.0.1:6379>,也就表示成功了。二、redis的数据类型redis有5种数据类型,分别如下String:字符串List:列表Set:集...原创 2018-08-18 20:10:42 · 2031 阅读 · 0 评论 -
ubuntu16.04安装redis
因为redis是用c++写的,所以在安装过程中要使用gcc编译,如果你的linux没有安装gcc,要先安装好gcc,可使用如下命令yum install gcc-c++一路y之后就会安装好gcc,安装好之后就可以开始安装redis。我们先去官网下载redis4.0.9的压缩包https://redis.io/download下载好之后,我们进入压缩包所在的路径,进行解压...原创 2018-06-10 21:49:21 · 1057 阅读 · 0 评论