
Redis
文章平均质量分 88
haozlee
多年linux开发经验,熟悉c++,python。个人主页:https://leehao.me
展开
-
在多线程环境中使用Jedis
Jedis是一个Java语言的Redis客户端,它为Java语言连接与操作Redis提供了简单易用的接口。Jedis不是线程安全的,故不应该在多线程环境中共用一个Jedis实例。但是,也应该避免直接创建多个Jedis实例,因为这种做法会导致创建过多的socket连接,性能不高。 要保证线程安全且获得较好的性能,可以使用JedisPool。原创 2020-03-04 08:18:37 · 33850 阅读 · 7 评论 -
Hiredis 实现 Redis 流水线
Pipelining(流水线)允许 Redis 客户端一次向 Redis 发送多个命令,Redis 在接收到这些命令后,按顺序进行处理,然后将请求的处理结果一次性返回给客户端。流水线可以减少客户端与 Redis 之间的网络通信次数来提升 Redis 客户端在发送多个命令时的性能,可谓提升客户端性能的一个利器。 我们熟悉的 Python 版本的 Redis 客户端 redis-py 提供了 Stri原创 2017-06-10 11:21:50 · 13444 阅读 · 0 评论 -
使用 Supervisor 来管理 Redis 进程
Supervisor 是一个用 Python 实现的进程管理工具,可以很方便地启动,关闭,重启,查看,以及监控进程,当进程由于某种原因崩溃或者被误杀后,可以自动重启并发送事件通知。Supervisor 可谓运维利器,使用 Supervisor 来管理进程,可以提高系统的高可用特性。 随着 Redis 越来越流行,越来越多的公司都使用上了 Redis,因此 Redis 的进程管理就成了很多公司都需要原创 2017-08-29 23:51:02 · 10029 阅读 · 5 评论 -
Redis 快照持久化学习笔记
Redis 是一种内存数据库,它将数据存储在内存中,所以如果不将数据保存到硬盘中,那么一旦 Redis 进程退出,保存在内存中的数据将会丢失。为此,Redis 提供了两种不同的持久化方法来将数据存储到硬盘里面。一种方法叫做快照(snapshotting),它可以将存在于某一时刻的所有数据写入硬盘里面。另一种方法叫 AOF(append-only file),它会在执行写命令时,将被执行的写命令复制到原创 2017-07-09 13:39:59 · 3207 阅读 · 0 评论 -
Redis AOF 持久化学习笔记
文章 Redis 快照持久化学习笔记 介绍 Redis 快照持久化的功能,除了快照持久化外,Redis 还提供了 AOF(Append Only File)持久化功能。与快照持久化通过直接保存 Redis 的键值对数据不同,AOF 持久化是通过保存 Redis 执行的写命令来记录 Redis 的内存数据。AOF 持久化的原理理论上说,只要我们保存了所有可能修改 Redis 内存数据的命令(也就是写命原创 2017-07-17 23:58:05 · 11616 阅读 · 0 评论 -
夯实基础:Redis 的数据结构介绍
使用 Redis 这么久,发现自己还没写过一篇有关 Redis 数据结构的文章,从构造 Redis 整个知识体系来说,显示是不完整的。故这篇文章再次让自己回归到 Redis 的五种基本数据结构,除了描述这些数据结构的特点,也介绍如何使用 Redis 命令来操作这些数据结构。 Redis 的支持的数据结构包括:字符串 列表集合有序集合哈希表需要指出的是,这些数据结构不是 Redis 指内原创 2017-06-13 23:57:24 · 1385 阅读 · 1 评论 -
Redis 图形化监控方案 RedisLive 介绍
作为一款开源的 Redis 图形化监控工具,RedisLive 提供对 Redis 实例的内存使用情况,接收的客户端命令,接收的请求数量以及键进行监控。RedisLive 的工作原理基于 Redis 的 INFO 和 MONITOR 命令,通过向 Redis 实例发送 INFO 和 MONITOR 命令来获取 Redis 实例当前的运行数据。RedisLive 提供的图形化展示界面如下图所示:安装R原创 2017-05-30 20:12:24 · 6723 阅读 · 2 评论 -
Redis 事务学习笔记
Redis 为了支持事务,提供了 5 个相关的命令,他们分别是 MULTI,EXEC, WATCH,UNWATCH 和 DISCARD。我们先介绍 MULTI 和 EXEC 的用法,MULTI 和 EXEC 支持了 Redis 的基本事务的用法。接下来介绍 WATCH,UNWATCH 和 DISCARD,这3个命令则支持更高级的 Redis 事务的用法。事务允许一次执行多个命令,并且带有以下两个重要原创 2017-05-17 08:47:54 · 2590 阅读 · 0 评论 -
Redis 性能测试记录
虽然 Redis 本身也提供redis-benchmark工具来对 Redis 的性能进行测试,但为了对测试维度自由定制,我们还是通过自己编写脚本的方式来测试。Redis 的官方文档也提到了,简单的起一个循环,然后在循环中向 Redis 发送操作命令,其实不是对 Redis 进行性能测试,而是对网络延迟进行测试。为了真正测试 Redis 的并发性能,需要使用多个 Redis 连接,或者使用 pipe原创 2017-04-23 13:12:38 · 2065 阅读 · 0 评论 -
Redis C 语言客户端 hiredis 的使用
最近需要使用 C++ 来访问 Redis,查找了一些开源 C/C++ Redis 客户端,发现 hiredis 目前的社区活跃度较高,且比较轻量级易上手,就决定选用这款客户端了。安装以 Mac OS 为例,说明如何安装 hiredis。下载 hiredis 的代码git clone https://github.com/redis/hiredis.git编译安装 makemake inst原创 2017-04-21 21:10:11 · 8465 阅读 · 0 评论 -
Redis Sentinel 学习笔记
概述Redis Sentinel 是用来实现 Redis 高可用的一套解决方案。Redis Sentinel 由两个部分组成:由一个或者多个 Sentinel 实例组成 Sentinel 系统;由一个主 Redis 服务器(master redis)和多个(或者一个)从 Redis 服务器(slave redis)组成主从备份的 Redis 系统。Sentinel 系统本身是一个分布式的系统,它的作原创 2017-03-04 22:34:57 · 1727 阅读 · 0 评论 -
使用Redis SETNX 命令实现分布式锁
使用Redis的 SETNX 命令可以实现分布式锁,下文介绍其实现方法。SETNX命令命令格式 SETNX key value将 key 的值设为 value,当且仅当 key 不存在 若给定的 key 已经存在,则 SETNX 不做任何动作。 SETNX 是SET if Not eXists的简写。返回值返回整数,具体为 - 1,当 key 的值被设置 - 0,当 key 的值没被设原创 2015-10-13 21:31:14 · 150597 阅读 · 39 评论 -
刨根问底-Redis数据结构剖析
之前分享的有关redis数据结构的ppt,有兴趣的可以参考一下。《刨根问底-Redis数据结构剖析》 链接:http://wenku.baidu.com/view/f86e3b97c5da50e2524d7fc4原创 2016-01-21 17:20:26 · 833 阅读 · 0 评论 -
Jedis实现Publish/Subscribe功能
Redis为我们提供了publish/subscribe(发布/订阅)功能。我们可以对某个channel(频道)进行subscribe(订阅),当有人在这个channel上publish(发布)消息时,redis就会通知我们,这样我们可以收到别人发布的消息。 作为Java的redis客户端,Jedis提供了publish/subscribe的接口。本文讲述如何使用jedis来实现redis的pub原创 2015-09-11 14:30:04 · 42640 阅读 · 9 评论 -
记一次 BUG 的排查过程
最近生产上上线了一个新的功能,在业务人员使用过程中,通过查看日志我们发现一个诡异的问题。这篇文章记录一下这个问题的排查过程以及解决方法。存在问题的程序使用了 C 语言的 Redis 客户端 hiredis 来连接和操作 Redis。由于处于分布式的环境,所以我们使用了 Redis 的事务的特性,以避免多个客户端同时对 Redis 数据进行更改导致数据错乱的情况出现。有关 hiredis 的使用以及原创 2017-12-18 09:03:17 · 1796 阅读 · 0 评论