随笔分类 - redis
摘要:如何保证缓存和数据库一致性,这是一个老生常谈的话题了。 但很多人对这个问题,依旧有很多疑惑: 到底是更新缓存还是删缓存? 到底选择先更新数据库,再删除缓存,还是先删除缓存,再更新数据库? 为什么要引入消息队列保证一致性? 延迟双删会有什么问题?到底要不要用? ... 这篇文章,我们就来把这些问题讲清
阅读全文
摘要:Redis是什么? 面试官: 你先来说一下redis是什么吧? 我: Redis是C语言开发的一个开源的(遵从BSD协议)高性能键值对(key-value)的内存数据库,可以用作数据库,缓存,消息中间件等。它是一种NoSQL(not-only sql,多指非关系型数据库)的数据库。 我接着说: Re
阅读全文
摘要:Redis作为内存数据库,拥有非常高的性能,单个实例的QPS能够达到10W左右。但我们在使用Redis时,经常时不时会出现访问延迟很大的情况,如果你不知道Redis的内部实现原理,在排查问题时就会一头雾水。 很多时候,Redis出现访问延迟变大,都与我们的使用不当或运维不合理导致的。 这篇文章我们就
阅读全文
摘要:RESP 文章开始前,先放出两道面试题1.Redis底层,使用的什么协议?2.RESP是什么,在Redis怎么体现的? 什么是 RESP? 是基于TCP的应用层协议 RESP(Redis Serialization Protocol);RESP底层采用的是TCP的连接方式,通过tcp进行数据传输,然
阅读全文
摘要:SET key_name my_random_value NX PX 30000 NX 表示if not exist 就设置并返回true,否则不设置并返回false PX 表示过期时间用毫秒级,30000 表示这些毫秒时间后此key过期 redis分布式锁 有缺点: 只作用在一个redis节点上,
阅读全文
摘要:Rdis作为内存数据库,需要具备高可用性,不然机器宕机,还在内存里的数据就会丢失。醉常用的方法就是搭建集群,master机器挂了,可以用slave机器顶上,继续提供服务。但是redis集群不会自动进行主从的切换。所以redis官方提供一个解决方案,Redis Sentinel 简介 Redis Se
阅读全文
摘要:Redis的Set结构相当于Java中的HashSet,是无序的元素集合,并且元素都是唯一的。由于Set是通过hash表实现的,所以它的增加、删除、查找操作的时间复杂度都是O(1)。最大成员个数为232-1。 SADD 最早可用版本:1.0.0 时间复杂度:每个元素的添加的时间复杂度为O(1),如果
阅读全文
摘要:Sorted Set(也称ZSET)和Set一样也是string类型的集合,你可以将它理解为Java中SortedSet和HashMap的集合体,一方面它是一个set,保证了元素的唯一性,另一方面它给每个value赋予了一个权重score,用来进行排序。集合中成员的最大个数为232-1个。 BZPO
阅读全文
摘要:List是Redis的基础数据类型之一,类似于Java中的LinkedList。一个列表最多包含232个元素,常被用作模拟队列操作,接下来我们具体介绍一下List相关的命令。 BLPOP 最早可用版本:2.0.0 时间复杂度:O(1) 用法: 1 BLPOP key [key ...] timeou
阅读全文
摘要:Hash是一种String类型的field、value的映射表,因此,它非常适合存储对象。下面我们来一一介绍与Hash相关的命令。 HDEL 最早可用版本:2.0.0 时间复杂度:O(N),其中N为要删除的field的个数 HDEL命令用于删除指定key的指定的一个或多个field。如果指定的fie
阅读全文
摘要:String类型是Redis中比较常用的类型,因此,和String相关的命令也比较多 APPEND 最早可用版本2.0.0 当指定的key存在,并且value是字符串时,APPEND命令会在字符串末尾追加指定的字符串,如果指定的key不存在,则会创建一个空的字符串,并且追加上指定的value,效果类
阅读全文
摘要:redis中获取所有key值的方式有两种,一种是keys方式,另外一个方式,是使用迭代器的方式Scan。 在key值很多的情况下,如果使用keys,就有可能发生阻塞,因为redis是单线程的。 keys命令的时间复杂度是O(N),是遍历算法,会容易导致redis的服务卡顿。 Scan的时间复杂度同样
阅读全文
摘要:DEL 最早可用版本1.0.0 删除指定的键值对,如果指定的key不存在,则忽略。DEL命令的时间复杂度是O(N),对于除字符串外的其他数据类型,命令的时间复杂度为O(M),M是值的元素的个数。所以,在生产环境尽量避免一次性删除过多复杂数据类型的操作。 123456 127.0.0.1:6379>
阅读全文
摘要:1、 Redis和Memcache都是将数据存放在内存中,都是内存数据库。不过memcache还可用于缓存其他东西,例如图片、视频等等。 2、Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储。 3、虚拟内存–Redis当物理内存用完时,可以将一些很久没
阅读全文
摘要:在使用github.com/go-sql-driver/mysql连接数据库的时候出现如下错误 panic: dial tcp 127.0.0.1:3306: connect: connection refused 出错代码段 1 2 3 4 5 db, err := sql.Open("mysql
阅读全文
摘要:redis简介 1.基于内存的key-value数据库 2.基于c语言编写的,可以支持多种语言的api //set每秒11万次,取get 81000次 3.支持数据持久化 4.value可以是string,hash, list, set, sorted set 使用场景 1. 去最新n个数据的操作
阅读全文
摘要:【redis是什么】 redis是一个开源的、使用C语言编写的、支持网络交互的、可基于内存也可持久化的Key-Value数据库。 redis的官网地址,非常好记,是redis.io。(特意查了一下,域名后缀io属于国家域名,是british Indian Ocean territory,即英属印度洋
阅读全文
摘要:1,wget http://download.redis.io/releases/redis-5.0.7.tar.gz 2,进入下载目录,进行解压 tar -zvxf redis-5.0.7.tar.gz 3,一般都会将redis目录放置到 /usr/local/redis目录,所以这里输入下面命令
阅读全文

浙公网安备 33010602011771号