Skip to content

Instantly share code, notes, and snippets.

View huangzworks's full-sized avatar

黄健宏 huangzworks

View GitHub Profile
@huangzworks
huangzworks / gist:5105319
Last active December 14, 2015 15:08
Sphin 执行 make latexpdf 时输出的错误
$ make latexpdf
sphinx-build -b latex -d _build/doctrees . _build/latex
Making output directory...
Running Sphinx v1.1.3
loading translations [zh_CN]... done
loading pickled environment... done
building [latex]: all documents
updating environment: 0 added, 1 changed, 0 removed
reading sources... [100%] key/sort
looking for now-outdated files... none found
@huangzworks
huangzworks / gist:5606471
Created May 19, 2013 02:39
字体设置
\usepackage{xeCJK}
\setCJKmainfont{WenQuanYi Micro Hei}
\setCJKsansfont{WenQuanYi Micro Hei}
\setCJKmonofont{WenQuanYi Micro Hei Mono}
@huangzworks
huangzworks / gist:5830892
Last active December 18, 2015 19:09
用 ZSCORE 或 ZRANK 命令模拟 ZEXISTS 命令
from redis import Redis
r = Redis()
# T = O(1)
def zexists_1(key, member):
return r.zscore(key, member) is not None
# T = O(log N)
def zexists_2(key, member):

od 命令就可以清晰地看到符号了。

至于 RDB 文件的格式,在这里有详细记载: http://www.redisbook.com/en/latest/internal/rdb.html#id4

$ od -c dump.rdb
0000000   R   E   D   I   S   0   0   0   6 376  \0  \n 006   m   y   l
0000020   i   s   t   ,   ,  \0  \0  \0   "  \0  \0  \0 003  \0  \0  \f
0000040   f   e   n   g   x   i   n   g   x   i   n   g 016  \b   z   e
@huangzworks
huangzworks / gist:6289598
Created August 21, 2013 02:00
测试一下数据库平均生存时长功能
127.0.0.1:6379> FLUSHALL
OK
127.0.0.1:6379> SETEX k1 1000 v1
OK
127.0.0.1:6379> INFO keyspace
# Keyspace
db0:keys=1,expires=1,avg_ttl=997453
@huangzworks
huangzworks / str_to_redis_protocol.py
Last active December 22, 2015 09:28
将输入字符串转换成 Redis 命令请求协议
# coding: utf-8
def p(s):
"将输入字符串转换成 Redis 命令请求协议"
# 将输入字符串分割为列表,并移除其中的空白字符串
# 比如 "SET KEY VALUE" 分为 ["SET", "KEY", "VALUE"]
argv = s.split()
@huangzworks
huangzworks / gist:6931111
Last active December 25, 2015 06:19
Redis 的 SORT 命令在不给定 STORE 选项时,使用二进制方式来对比字符串(memcmp);在给定 STORE 选项时,根据本地编码来对比字符串(strcoll);所以即使对同一个键进行排序,也可能会产生两种不同的结果。
>>> from redis import Redis
>>> r = Redis()
>>> r.rpush("msg", u"你好", u"早上好", u"很高兴认识你")
3L
>>> for m in r.sort("msg", alpha=True): print(m)
...
很高兴认识你
@huangzworks
huangzworks / annotated_sort.c
Last active December 25, 2015 16:29
Redis 排序功能(SORT命令)的相关代码的注释。
/*
* 位于 redis.h 文件,和排序操作相关的两个数据结构
*/
// 用于保存被排序值及其权重的结构
typedef struct _redisSortObject {
// 被排序键的值
robj *obj;
@huangzworks
huangzworks / bitops.c
Created October 17, 2013 06:53
注释的 bitops.c 文件,该文件描述了 Redis 保存二进制位数组的方法,以及 SETBIT 、 GETBIT 、 BITCOUNT 、 BITOP 四个命令的实现原理。
/* Bit operations.
*
* Copyright (c) 2009-2012, Salvatore Sanfilippo <antirez at gmail dot com>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
@huangzworks
huangzworks / cluster_command.md
Last active August 13, 2019 15:19
Redis 目前所有集群命令。

集群

CLUSTER INFO 打印集群的信息

CLUSTER NODES 列出集群当前已知的所有节点(node),以及这些节点的相关信息。

节点