关于文章 redis

broadcast multicast queue redis redisgroupmsg

redisGroupMsg redis队列组播广播

redisGroupMsg redis队列组播广播

redisGroupMsg redis队列组播广播

redis 向多个队列发送广播

最近要做一个类似聊天软件的东西,经过大量测试搞了这么一玩意儿

性能是py直接循环发送的13倍速度

pip install redisGroupMsg
from redisGroupMsg import redisMessage

r = redisMessage()

if __name__ == '__main__':
    for a in range(1,10):
        e = "id:"+str(a)
        # 添加到组
        # r.addGroup("test",e)
        #在组内广播
        # r.sendGroup("test",e)
        #从组内删除
        r.removeGroup("test",e)
kv linux nosql redis

ardb 兼容redis多种储存引擎的好玩轮子

Ardb是一个新的构建在持久化Key/Value存储实现上的NoSQL DB服务实现

Ardb是一个新的构建在持久化Key/Value存储实现上的NoSQL DB服务实现,支持list/set/sorted set/bitset/hash/table等复杂的数据结构,以Redis协议对外提供访问接口。

支持多种储存引擎

git clone https://github.com/yinqiwen/ardb

storage_engine=rocksdb make
storage_engine=leveldb make
storage_engine=lmdb make
storage_engine=wiredtiger make
storage_engine=perconaft make
storage_engine=forestdb make


make dist就可以了

rocksdb facebook基于leveldb的闪存储存引擎

点击下载

leveldb Leveldb是一个google实现的非常高效的kv数据库

点击下载

lmdb是openLDAP项目开发的嵌入式(作为一个库嵌入到宿主程序)存储引擎

点击下载

wiredtiger mongodb的储存引擎

点击下载

perconaft percona公司的轮子 他家优化的各种数据库都挺不错

点击下载

ForestDB 是一个快速的 Key-Value 存储引擎,基于层次B +树单词查找树。由 Couchbase 缓存和存储团队开发。

谁知道什么鬼!! 编译失败了一个!!!!!!

linux nosql redis 持久化

redis持久化

redis持久化

redis rdb模式保存

save  #io保存

bgsave #异步保存

#自动保存
save  5     1       #Redis服务器在5秒之内,对数据库进行了至少1次修改,就执行bgsave命令
save  300   10      #Redis服务器在300秒之内,对数据库进行了至少10次修改,就执行bgsave命令
save  60    10000   #Redis服务器在60秒之内,对数据库进行了至少10000次修改,就执行bgsave命令

###  redis AOF持久化配置

```bash
appendonly yes
appendfsync=always#everysec#no

appendfsync设置为always时,服务器在每个事件循环中将aof_buf缓冲区中的所有内容写入并同步到AOF文件。从效率来说,是三个选项值当中最慢的一个,但从安全性来说,always是最安全的,因为即使出现故障停机,AOF持久化也只会丢失一个事件循环中所产生的命令数据。

appendfsync设置为everysec时,服务器在每个事件循环中将aof_buf缓冲区中的所有内容写入到AOF文件,并且每隔一秒将再次对AOF文件进行同步,并且这个同步操作是由一个线程专门负责执行的。从效率上来说,everysec模式足够快,并且就算出现故障停机,数据库也只丢失一秒钟的命令数据。

appendfsync设置为no时,服务器在每个事件循环中,将aof_buf缓冲区中的所有内容写入到AOF文件,但并不对AOF文件进行同步,何时同步由操作系统决定。从效率上来说,与everysec模式相当。AOF文件写入速度是最快的,但是单次同步时长是三种模式中最长的,当出现故障停机时,服务器将丢失上次同步AOF文件之后的所有写命令数据。

leveldb linux nosql redis ssdb

兼容redis的持久化储存ssdb

一个高性能的支持丰富数据结构的 NoSQL 数据库, 用于替代 Redis.

一个高性能的支持丰富数据结构的 NoSQL 数据库, 用于替代 Redis.

特性

  • 替代 Redis 数据库, Redis 的 100 倍容量
  • LevelDB 网络支持, 使用 C/C++ 开发
  • Redis API 兼容, 支持 Redis 客户端
  • 适合存储集合数据, 如 list, hash, zset...
  • 客户端 API 支持的语言包括: C++, PHP, Python, Java, Go
  • 持久化的队列服务
  • 主从复制, 负载均衡

安装ssdb(linux)

wget --no-check-certificate https://github.com/ideawu/ssdb/archive/master.zip
unzip master
cd ssdb-master
make
# optional, install ssdb in /usr/local/ssdb
sudo make install

启动

# start master
./ssdb-server ssdb.conf

# or start as daemon
./ssdb-server -d ssdb.conf

php使用

require_once('SSDB.php');
$ssdb = new SimpleSSDB('127.0.0.1', 8888);
$resp = $ssdb->set('key', '123');
$resp = $ssdb->get('key');
echo $resp; // output: 123
php redis

从 Redis 迁移到 SSDB

PHP 脚本可以用来将 Redis 服务器上的数据, 拷贝到 SSDB 服务器上.

工具

tools 目录中的 redis-import.php PHP 脚本可以用来将 Redis 服务器上的数据, 拷贝到 SSDB 服务器上.

用法:

php redis-import.php redis_host redis_port redis_db ssdb_host ssdb_port

参数:

  • redis_host: Redis 运行所在的 IP 或者主机名
  • redis_port: Redis 监听的端口
  • redis_db: Redis 的 DB 编号
  • ssdb_host: SSDB 运行所在的 IP 或者主机名
  • ssdb_port: SSDB 监听的端口

请确保你的 PHP Redis 模块 https://github.com/nicolasff/phpredis 已经安装.

Redis 工具的支持

Tool Supported
redis-cli 支持
Twemproxy 支持
Sentinel 不支持

SSDB 和 Redis 命令对照表

SSDB 支持 Redis 协议和客户端, 所以你可以使用 Redis 的客户端来连接 SSDB 进行操作.

但是, 如果你想使用 SSDB 的客户端, 你可能需要下面的命令对照表.

Key-Value

Redis SSDB
get get
set set
setex setx(for kv type only)
del del
incr/incrBy incr
decr/decrBy decr
mget/getMultiple multi_get
setMultiple multi_set
del(multiple) multi_del
keys keys(for kv type only)
getset getset
setnx setnx
exists exists
ttl ttl
expire expire
getbit getbit
setbit setbit
bitcount redis_bitcount, countbit
strlen strlen
getrange getrange

请非常细心地阅读此处的说明:

  • 对于 Redis, substr 命令早已经被废弃, 所以你不要使用 substr 命令在 Redis 客户端(当然, 你__可以__这么做, 但你__必须不__这么做)
  • 如果你还想着 Redis, 那么就用 getrange 命令
  • 注意这两者的区别: substr(start, size), getrange(start, end)
  • 当 size 是负数时, 如果你不熟悉 PHP 语言, 那么你会觉得有些奇怪
  • SSDB 的 substr 命令的描述这 这里

Key-Map(Hash)

Redis SSDB
del(not supported) hclear
hget hget
hset hset
hdel, hmdel hdel, multi_hdel
hIncrBy hincr
hDecrBy hdecr
hKeys hkeys
hVals hscan
hMGet multi_hget
hMSet multi_hset
hLen hsize
hExists hexists
keys hlist(for hash type only)

如果你想删除整个 hash, 那么你就必须使用 SSDB 的客户端来执行 hclear 命令, 用 Redis 的客户端是删除不了整个 hash 的.

Key-Zset

Redis SSDB
del(not supported) zclear
zScore zget
zAdd zset
zRem zdel
zRange zrange
zRevRange zrrange
zRangeByScore zscan
zRevRangeByScore zrscan
zIncrBy zincr
zDecrBy zdecr
zCount zcount
zSum zsum
zAvg zavg
zCard zsize
zRank zrank
zRemRangeByRank zremrangebyrank
zRemRangeByScore zremrangebyscore
keys zlist(for zset type only)

如果你想删除整个 zset, 那么你就必须使用 SSDB 的客户端来执行 zclear 命令, 用 Redis 的客户端是删除不了整个 zset 的.

Key-List(Queue)

Redis SSDB
del(not supported) qclear
llen/lsize qsize
lpush qpush_front
rpush qpush_back
lpop qpop_front
rpop qpop_back
lrange qslice
lindex, lget qget
lset qset
keys qlist(for queue/list type only)

如果你想删除整个 list, 那么你就必须使用 SSDB 的客户端来执行 qclear 命令, 用 Redis 的客户端是删除不了整个 list 的.