
redis
文章平均质量分 95
江上渔者21号
这个作者很懒,什么都没留下…
展开
-
redis
redis 为什么块 数据存在于于内存中,多路io复用 , 单线程Kafka,Mq,Redis作为消息队列使用时的差异?redis 消息推送(基于分布式 pub/sub)多用于实时性较高的消息推送,并不保证可靠。其他的mq和kafka保证可靠但有一些延迟(非实时系统没有保证延迟)。redis-pub/sub断电就清空,而使用redis-list作为消息推送虽然有持久化,但是又太弱...原创 2018-10-07 16:39:46 · 214 阅读 · 0 评论 -
redis分布式锁深度剖析(超时情况)
1、redis分布式锁的基本实现redis加锁命令:SETNX resource_name my_random_value PX 30000 这个命令的作用是在只有这个key不存在的时候才会设置这个key的值(NX选项的作用),超时时间设为30000毫秒(PX选项的作用) 这个key的值设为“my_random_value”。这个值必须在所有获取锁请求的客户端里保持唯一。S...转载 2019-04-03 15:19:07 · 8315 阅读 · 2 评论 -
redis 问题
0.redis单线程问题单线程指的是网络请求模块使用了一个线程(所以不需考虑并发安全性),即一个线程处理所有网络请求,其他模块仍用了多个线程。1.为什么说redis能够快速执行(1) 绝大部分请求是纯粹的内存操作(非常快速)(2) 采用单线程,避免了不必要的上下文切换和竞争条件(3) 非阻塞IO - IO多路复用...转载 2019-04-03 15:54:51 · 136 阅读 · 0 评论 -
redis事务
什么是 Redis 事务?和众多其它数据库一样,Redis 作为 NoSQL 数据库也同样提供了事务机制。在Redis中,MULTI / EXEC / DISCARD / WATCH 这四个命令是我们实现事务的基石。相信对有关系型数据库开发经验的开发者而言这一概念并不陌生,即便如此,我们还是会简要的列出 Redis 中事务的实现特征:1、在事务中的所有命令都将会被串行化的顺序执行,事务执行...转载 2019-04-03 15:24:51 · 88 阅读 · 0 评论 -
Redis事务(transaction)
事务(transaction)Note本文档翻译自:http://redis.io/topics/transactions。MULTI、EXEC、DISCARD和WATCH是 Redis 事务的基础。事务可以一次执行多个命令, 并且带有以下两个重要的保证: 事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户...转载 2019-04-03 15:23:47 · 412 阅读 · 0 评论 -
Redis--各个数据类型最大存储量
原文地址:https://redis.io/topics/data-typesStrings类型:一个String类型的value最大可以存储512MLists类型:list的元素个数最多为2^32-1个,也就是4294967295个。Sets类型:元素个数最多为2^32-1个,也就是4294967295个。Hashes类型:键值对个数最多为2^32-1个,也就是429496729...转载 2019-03-14 21:32:03 · 405 阅读 · 0 评论 -
Redis AOF 持久化学习笔记
文章 Redis 快照持久化学习笔记 介绍 Redis 快照持久化的功能,除了快照持久化外,Redis 还提供了 AOF(Append Only File)持久化功能。与快照持久化通过直接保存 Redis 的键值对数据不同,AOF 持久化是通过保存 Redis 执行的写命令来记录 Redis 的内存数据。AOF 持久化的原理理论上说,只要我们保存了所有可能修改 Redis 内存数据的命令(也...转载 2019-03-03 20:45:22 · 147 阅读 · 0 评论 -
Redis持久化RDB和AOF优缺点是什么?
Redis是一种高级key-value数据库。数据可以持久化,而且支持的数据类型很丰富。有字符串,链表,集 合和有序集合。支持在服务器端计算集合的并,交和补集(difference)等,还支持多种排序功能。所以Redis也可以被看成是一个数据结构服务器。Redis为了保证效率,数据缓存在内存中,Redis 会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,以保证数据的持久化。...转载 2019-03-12 08:04:22 · 509 阅读 · 0 评论 -
AOF 命令同步数据备份
AOF 命令同步Redis 将所有对数据库进行过写入的命令(及其参数)记录到 AOF 文件, 以此达到记录数据库状态的目的, 为了方便起见, 我们称呼这种记录过程为同步。举个例子, 如果执行以下命令:redis> RPUSH list 1 2 3 4(integer) 4redis> LRANGE list 0 -11) "1"2) "2"3) "3"4) ...转载 2019-03-17 12:37:52 · 772 阅读 · 0 评论 -
Redisson实现Redis分布式锁的N种姿势RedLock
前几天发的一篇文章《Redlock:Redis分布式锁最牛逼的实现》,引起了一些同学的讨论,也有一些同学提出了一些疑问,这是好事儿。本文在讲解如何使用Redisson实现Redis普通分布式锁,以及Redlock算法分布式锁的几种方式的同时,也附带解答这些同学的一些疑问。Redis几种架构Redis发展到现在,几种常见的部署架构有:单机模式; 主从模式; 哨兵模式; 集群模式;...转载 2019-01-26 13:07:25 · 6534 阅读 · 3 评论 -
redis 常用的命令
SELECT index 切换到指定的数据库,数据库索引号 index 用数字值指定,以 0 作为起始索引值。默认使用 0 号数据库。 keys pattern 用于查看对应数据库下面的 所有键或者匹配的键 scan 0 接口上的水分 史蒂芬 ...原创 2018-09-30 11:49:19 · 208 阅读 · 0 评论 -
缓存穿透,缓存击穿,缓存雪崩解决方案分析
对于一些设置了过期时间的 KEY ,如果这些 KEY 可能会在某些时间点被超高并发地访问,是一种非常“热点”的数据。这个时候,需要考虑这个个问题。 缓存被“击穿”的问题,和缓存“雪崩“”的区别在于,前者针对某一 KEY 缓存,后者则是很多 KEY 。 缓存被“击穿”的问题,和缓存“穿透“”的区别在于,这个 KEY 是真实存在对应的值的。前言设计一个缓存系统,不得不要考虑的问题就是:缓存穿...转载 2018-10-10 15:54:20 · 188 阅读 · 0 评论 -
redis 列表做队列
127.0.0.1:6379> rpush mylist a b c(integer) 3127.0.0.1:6379> get mylist(error) WRONGTYPE Operation against a key holding the wrong kind of value127.0.0.1:6379> lrange mylist 0 31) "a"2...原创 2018-12-20 18:04:33 · 300 阅读 · 0 评论 -
redis 实现分布式锁
1. 加锁过程 执行redis的setnx,只有key不存在才能set成功(实际使用的是set(key, value, "NX", "EX", seconds),redis较新版本支持) 如果set成功(同时也设置了key的过期时间),则表示加锁成功 如果set失败,则每次sleep(x)毫秒后不断尝试,直到成功或者超时 2. 释放过程 判断加锁是否成功 ...原创 2018-12-20 18:06:57 · 153 阅读 · 0 评论 -
set 命令
127.0.0.1:6379> type dongfucailist127.0.0.1:6379> sadd bbs 'discuz.net'(integer) 1127.0.0.1:6379> sadd bbs 'discuz.net'(integer) 0127.0.0.1:6379> sdd bbs 'set'(error) ERR unknown c...原创 2018-12-20 18:08:47 · 416 阅读 · 0 评论 -
zset
127.0.0.1:6379> ZADD zsetkeyscore 1 google(integer) 1127.0.0.1:6379> zadd zsetkeyscore 2 baidu(integer) 1127.0.0.1:6379> zadd zsetkeyscore 3 souhu(integer) 1127.0.0.1:6379> zadd zse...转载 2018-12-21 11:58:05 · 449 阅读 · 0 评论 -
redis的登陆
Redis命令用于在redis服务器上执行某些操作。要在Redis服务器上运行的命令,需要一个Redis客户端。 Redis客户端在Redis的包,这已经我们前面安装使用过了。语法Redis客户端的基本语法如下:$redis-cli例子下面举例说明如何使用Redis客户端。要启动redis客户端,打开终端,输入命令Redis命令行:redis-cli。这将连接到本地服务...转载 2018-12-21 14:25:12 · 374 阅读 · 0 评论 -
redis 的发布订阅消息队列
demo 一个发布者,2个订阅者代码块Shell➜ ~ redis-cli 127.0.0.1:6379> 127.0.0.1:6379> 127.0.0.1:6379> PUBLISH redisChat "learn publish subscribe"(integer) 2127.0.0.1:6379> ...转载 2018-12-21 14:26:22 · 252 阅读 · 0 评论 -
hash
127.0.0.1:6379> keys * 1) "dong" 2) "\xe5\x8c\x97\xe4\xba\xac" 3) "zsetkeyscore" 4) "bbs" 5) "wang" 6) "foo" 7) "dongkey" 8) "mylist" 9) "dongfucai"转载 2018-12-21 14:36:20 · 145 阅读 · 0 评论 -
Simple Dynamic String
实现字符串对像Simple Dynamic String目录实现字符串对像Simple Dynamic Stringset stringAPPED 过程因为 char* 类型的功能单一, 抽象层次低, 并且不能高效地支持一些 Redis 常用的操作(比如追加操作和长度计算操作), 所以在 Redis 程序内部, 绝大部分情况下都会使用 SDS 而不是 char* 来表示...原创 2018-12-21 15:25:50 · 339 阅读 · 0 评论 -
Redis实现CAS的乐观锁
对于经常开发Web的Coder们,经常会有这样的需求,就是在多机的分布式环境下,有时候需要限制多台机器上的请求修改同一份资源。对于单机的环境下,我们通常可以用同步或者锁去避免多线程下的竞态条件。以java为例,我们可以用synchronized或者ReentrantLock,去做资源访问的同步。但这是JVM和操作系统提供给我们的特性,但是对于分布式环境下我们没有这些便利条件。所以我们需要引入一个外...转载 2019-04-03 15:26:58 · 465 阅读 · 0 评论