Pika is a nosql compatible with redis, it is developed by Qihoo's DBA and infrastructure team

Overview

YnbjQf.png

Build Status Downloads

Introduction中文

Pika is a persistent huge storage service , compatible with the vast majority of redis interfaces (details), including string, hash, list, zset, set and management interfaces. With the huge amount of data stored, redis may suffer for a capacity bottleneck, and pika was born for solving it. Except huge storage capacity, pika also support master-slave mode by slaveof command, including full and partial synchronization. You can also use pika together with twemproxy or codis(pika has supported data migration in codis,thanks left2right and fancy-rabbit) for distributed Redis solution

UserList

Qihoo 360game Weibo Garena
Apus Ffan Meituan XES
HX XL GWD DYD
YM XM XL YM
MM VIP LK KS

More

Feature

  • huge storage capacity
  • compatible with redis interface, you can migrate to pika easily
  • support master-slave mode (slaveof)
  • various management interfaces

For developer

Releases

The User can download the binary release from releases or compile the source release.

Dependencies

  • snappy - a library for fast data compression
  • glog - google log library

Upgrade your gcc to version at least 4.8 to get C++11 support.

Supported platforms

  • linux - CentOS 6&7

  • linux - Ubuntu

If it comes to some missing libs, install them according to the prompts and retry it.

Compile

Upgrade your gcc to version at least 4.8 to get C++11 support.

Get the source code

git clone https://github.com/Qihoo360/pika.git

git submodule init
git submodule update

Then compile pika, all submodules will be updated automatically.

make

Usage

./output/bin/pika -c ./conf/pika.conf

Performance

More details on Performance.

Documents

  1. Wiki

Contact Us

QQ group: 294254078

Comments
  • 写入速度不稳定

    写入速度不稳定

    硬件环境

    腾讯云 8核cpu,16G内存,100G SSD本地硬盘,

    现象描述

    最初写入速度 200w/分钟,几分钟后维持在平均180w/分钟,但写入数据量达到80G后,写入速度下降到50w/分钟

    问题

    请问这个是合理的下降还是有什么配置可以优化?

    感谢360宋同学的回复 单独压测pika slotmigrate 要为 no 因为现在打开codis之后,其实你的所有kv都是存在set数据结构下,这样每一次操作其实在引擎下面会转化成很多自操作,相比关闭之后会慢不少

    写入方式为 golang 创建 50个redis客户端,然后50个协程调用test函数

    func test(client *redis.Client){
    	for true{
    		pipe:=client.Pipeline();
    		u1 := uuid.NewV4().String()
    		key0 := u1+":user:0"
    		pipe.Incr(key0);
    		pipe.Incr(u1+":user:1");
    		pipe.Incr(u1+":user:2");
    		pipe.Incr(u1+":user:3");
    		pipe.Incr(u1+":user:4");
    		//检查是否处理过
    		pipe.Exists(u1)
    		pipe.Set(u1+":orderId","1",time.Hour*24);
    		pipe.LPush(u1+":user:4",
    			"{'openId':'6BdpVU','yyyappid':'97107fa23','action':'minus'," +
    				"'spend':1000," +
    				"'note':'abc'," +
    				"'logTime':1503383236932,'userVc':542939}");
    		_ ,err:= pipe.Exec();
    		if(nil!=err){
    			fmt.Println(err)
    		}
    	}
    }
    

    下面是pika的配置信息

    # Pika port
    port : 9221
    # Thread Number
    thread-num : 7
    # Sync Thread Number
    sync-thread-num : 6
    # Item count of sync thread queue
    sync-buffer-size : 10
    # Pika log path
    log-path : ./log_1/
    # Pika glog level: only INFO and ERROR
    loglevel : INFO
    # Pika db path
    db-path : ./db_1/
    # Pika write-buffer-size
    write-buffer-size : 268435456
    # Pika timeout
    timeout : 60
    # Requirepass
    requirepass : 
    # Masterauth
    masterauth : 
    # Userpass
    userpass : 
    # User Blacklist
    userblacklist : 
    # Dump Prefix
    dump-prefix : 
    # daemonize  [yes | no]
    #daemonize : yes
    # slotmigrate  [yes | no]
    slotmigrate : yes
    # Dump Path
    dump-path : ./dump_1/
    # Expire-dump-days
    dump-expire : 0
    # pidfile Path
    pidfile : ./pika.pid
    # Max Connection
    maxclients : 20000
    # the per file size of sst to compact, defalut is 2M
    target-file-size-base : 20971520
    # Expire-logs-days
    expire-logs-days : 7
    # Expire-logs-nums
    expire-logs-nums : 10
    # Root-connection-num
    root-connection-num : 2
    # Slowlog-log-slower-than
    slowlog-log-slower-than : 10000
    # slave-read-only(yes/no, 1/0)
    slave-read-only : false
    # Pika db sync path
    db-sync-path : ./dbsync_1/
    # db sync speed(MB) max is set to 125MB, min is set to 0, and if below 0 or above 125, the value will be adjust to 125
    db-sync-speed : 125
    # network interface
    # network-interface : eth1
    # replication
    # slaveof : master-ip:master-port
    #
    # CronTask, format: start-end/ratio, like 02-04/60, pika will check to schedule compaction between 2 to 4 o'clock everyday
    #                   if the freesize/disksize > 60%. NOTICE:if compact-interval is set, compact-cron will be mask and disable.
    # compact-cron :
    #
    # Compact-interval, format: interval/ratio, like 6/60, pika will check to schedule compaction every 6 hours,
    #                           if the freesize/disksize > 60%. NOTICE:compact-interval is prior than compact-cron;
    # compact-interval :
    
    ###################
    ## Critical Settings
    ###################
    # binlog file size: default is 100M,  limited in [1K, 2G]
    binlog-file-size : 104857600
    # Compression
    compression : snappy
    # max-background-flushes: default is 1, limited in [1, 4]
    max-background-flushes : 1
    # max-background-compactions: default is 1, limited in [1, 4]
    max-background-compactions : 2
    # max-cache-files default is 5000
    max-cache-files : 5000
    # max_bytes_for_level_multiplier: default is 10, you can change it to 5
    max-bytes-for-level-multiplier : 10
    
    opened by hea 30
  • 主从requirepass问题

    主从requirepass问题

    pika_version:2.3.1 info 部分log I0228 11:26:12.409108 13469 pika_trysync_thread.cc:239] Should connect master I0228 11:26:12.412156 13469 pika_trysync_thread.cc:254] Finish to start rsync, path:./dbsync/ I0228 11:26:12.412297 13469 pika_trysync_thread.cc:257] Connect to master ip:10.0.74.107port: 9221 I0228 11:26:12.412344 13469 pika_trysync_thread.cc:68] *2 $4 auth ....

    warning log Log line format: [IWEF]mmdd hh:mm:ss.uuuuuu threadid file:line] msg W0228 11:26:12.413130 13469 pika_trysync_thread.cc:93] Reply from master after trysync: OK W0228 11:26:12.413245 13469 pika_trysync_thread.cc:125] something wrong with sync, come in SyncError stage W0228 11:26:12.413254 13469 pika_server.cc:672] Sync error, set repl_state to PIKA_REPL_ERROR

    opened by dreamtraveler 26
  • FastoNoSQL integration

    FastoNoSQL integration

    Hi, do you have some C/C++ api for connection to pika db? i have this issue: https://github.com/fastogt/fastonosql/issues/53 . What you think about integration pika driver into FastoNoSQL? as result you will have gui for db.

    opened by topilski 23
  • 主从问题

    主从问题

    1、master端需要密码认证时,在slave端使用slaveof命令,无法连接到master。 请问如何在master有密码的情况下,slave端能成功连接? 2、在slave端使用slaveof命令时,偶尔会出现以下错误,无法连接到master: I0811 17:52:15.360584 31455 pika_admin.cc:118] Trysync, Slave ip_port: xxx.xxx.xxx.xxx:9221 filenum: 0 pro_offset: 0 I0811 17:52:15.361500 31455 pika_admin.cc:130] Trysync, dont FindSlave, so AddBinlogSender rsync: read error: Connection reset by peer (104) rsync error: error in rsync protocol data stream (code 12) at io.c(759) [sender=3.0.6] W0811 17:52:15.366693 31487 pika_server.cc:577] rsync send file failed! From: ./dump/20160811/list/000025.sst, To: list/000025.sst, At: xxx.xxx.xxx.xxx:12221, Error: 3072 rsync: read error: Connection reset by peer (104) rsync error: error in rsync protocol data stream (code 12) at io.c(759) [sender=3.0.6] rsync: read error: Connection reset by peer (104) rsync error: error in rsync protocol data stream (code 12) at io.c(759) [sender=3.0.6] rsync: read error: Connection reset by peer (104) rsync error: error in rsync protocol data stream (code 12) at io.c(759) [sender=3.0.6] rsync: read error: Connection reset by peer (104) rsync error: error in rsync protocol data stream (code 12) at io.c(759) [sender=3.0.6] rsync: read error: Connection reset by peer (104) rsync error: error in rsync protocol data stream (code 12) at io.c(759) [sender=3.0.6]

    出现的概率很小,但是出现以后,即使执行重启服务、清库等操作,主从也无法连接成功。

    opened by mazhenyang 19
  • 主从同步运行一小段时间后没法正常工作

    主从同步运行一小段时间后没法正常工作

    env: pika 3.4.0 Oct 12 master branch centos 7.8

    master log pika.INFO

    I1124 15:38:02.599153 13796 pika_server.cc:1186] Partition: db0 RSync Send Files Success
    I1124 15:38:02.987164 23083 pika_repl_server_conn.cc:108] Receive Trysync, Slave ip: xx.xx.xx.245, Slave port:9221, Partition: db0, filenum: 108128, pro_offset: 16589588
    I1124 15:38:02.987440 23083 pika_repl_server_conn.cc:192] Partition: db0 TrySync Success, Session: 224
    W1124 15:41:49.478492 23082 pika_slave_node.cc:32] Ack offset Start: filenum: 108128 offset: 104856077 term: 0 index: 42319875412 binglog size: 0 acked: 0End: filenum: 108128 offset: 104862926 term: 0 index: 660307 binglog size: 0 acked: 0 not found in binlog controller window.
    window status 
          Size: 53
          Begin_item: filenum: 108128 offset: 104856077 term: 0 index: 42319875412 binglog size: 94 acked: 0
          End_item: filenum: 108129 offset: 5198 term: 0 index: 42319875464 binglog size: 118 acked: 0
    W1124 15:41:49.478677 23082 pika_rm.cc:203] (db0:0)Corruption: UpdateAckedInfo failed
    W1124 15:41:49.478691 23082 pika_repl_server_conn.cc:483] Update binlog ack failed db0 0 Corruption: UpdateAckedInfo failed
    I1124 15:41:49.478791 23081 pika_repl_server_thread.cc:29] ServerThread Close Slave Conn, fd: 1864, ip_port: xx.xx.xx.245:41037
    I1124 15:41:49.478897 23081 pika_server.cc:740] Delete Slave Success, ip_port: xx.xx.xx.245:9221
    I1124 15:41:49.478926 23081 pika_rm.cc:90] Remove Slave Node, Partition: (db0:0), ip_port: xx.xx.xx.245:9221
    I1124 15:41:54.239161 23137 pika_stable_log.cc:151] ./log/log_db0/ Success purge 1 binlog file
    I1124 15:41:59.032140 23083 pika_repl_server_conn.cc:42] Receive MetaSync, Slave ip: xx.xx.xx.245, Slave port:9221
    I1124 15:41:59.032279 23083 pika_server.cc:843] Add New Slave, xx.xx.xx.245:9221
    I1124 15:41:59.172390 23084 pika_repl_server_conn.cc:108] Receive Trysync, Slave ip: xx.xx.xx.245, Slave port:9221, Partition: db0, filenum: 108128, pro_offset: 104862926
    I1124 15:41:59.172577 23084 pika_rm.cc:79] Add Slave Node, partition: (db0:0), ip_port: xx.xx.xx.245:9221
    I1124 15:41:59.172596 23084 pika_repl_server_conn.cc:181] Partition: db0 TrySync Success, Session: 225
    W1124 15:41:59.214401 23083 pika_repl_server_conn.cc:466] Activate Binlog Sync failed partition=db0_0,ip_port=xx.xx.xx.245:9221,session id=0 Corruption: Init binlog file reader failedCorruption: partition=db0_0,ip_port=xx.xx.xx.245:9221,session id=225  binlog reader init failed
    I1124 15:41:59.214589 23081 pika_repl_server_thread.cc:29] ServerThread Close Slave Conn, fd: 816, ip_port: xx.xx.xx.245:41109
    

    master side log, pika.WARNING

    W1124 15:41:49.478492 23082 pika_slave_node.cc:32] Ack offset Start: filenum: 108128 offset: 104856077 term: 0 index: 42319875412 binglog size: 0 acked: 0End: filenum: 108128 offset: 104862926 term: 0 index: 660307 binglog size: 0 acked: 0 not found in binlog controller window.
    window status 
          Size: 53
          Begin_item: filenum: 108128 offset: 104856077 term: 0 index: 42319875412 binglog size: 94 acked: 0
          End_item: filenum: 108129 offset: 5198 term: 0 index: 42319875464 binglog size: 118 acked: 0
    W1124 15:41:49.478677 23082 pika_rm.cc:203] (db0:0)Corruption: UpdateAckedInfo failed
    W1124 15:41:49.478691 23082 pika_repl_server_conn.cc:483] Update binlog ack failed db0 0 Corruption: UpdateAckedInfo failed
    W1124 15:41:59.214401 23083 pika_repl_server_conn.cc:466] Activate Binlog Sync failed partition=db0_0,ip_port=xx.xx.xx.245:9221,session id=0 Corruption: Init binlog file reader failedCorruption: partition=db0_0,ip_port=xx.xx.xx.245:9221,session id=225  binlog reader init failed
    W1124 15:42:09.223461 23082 pika_repl_server_conn.cc:466] Activate Binlog Sync failed partition=db0_0,ip_port=xx.xx.xx.245:9221,session id=0 Corruption: Init binlog file reader failedCorruption: partition=db0_0,ip_port=xx.xx.xx.245:9221,session id=226  binlog reader init failed
    E1124 15:42:11.377209 23102 pika_client_conn.cc:160] ip_port: xx.xx.xx.248:41503, table: db0, command: "INFO", command_size: 4, arguments: 1, start_time(s): 1637739731, duration(us): 10893, do_duration_(us): 0
    W1124 15:42:19.234411 23083 pika_repl_server_conn.cc:466] Activate Binlog Sync failed partition=db0_0,ip_port=xx.xx.xx.245:9221,session id=0 Corruption: Init binlog file reader failedCorruption: partition=db0_0,ip_port=xx.xx.xx.245:9221,session id=227  binlog reader init failed
    W1124 15:42:29.245422 23082 pika_repl_server_conn.cc:466] Activate Binlog Sync failed partition=db0_0,ip_port=xx.xx.xx.245:9221,session id=0 Corruption: Init binlog file reader failedCorruption: partition=db0_0,ip_port=xx.xx.xx.245:9221,session id=228  binlog reader init failed
    E1124 15:42:35.230178 23105 pika_client_conn.cc:160] ip_port: xx.xx.xx.248:36931, table: db0, command: "info", command_size: 4, arguments: 1, start_time(s): 1637739755, duration(us): 10758, do_duration_(us): 0
    W1124 15:42:39.256443 23083 pika_repl_server_conn.cc:466] Activate Binlog Sync failed partition=db0_0,ip_port=xx.xx.xx.245:9221,session id=0 Corruption: Init binlog file reader failedCorruption: partition=db0_0,ip_port=xx.xx.xx.245:9221,session id=229  binlog reader init failed
    W1124 15:42:49.267314 23084 pika_repl_server_conn.cc:466] Activate Binlog Sync failed partition=db0_0,ip_port=xx.xx.xx.245:9221,session id=0 Corruption: Init binlog file reader failedCorruption: partition=db0_0,ip_port=xx.xx.xx.245:9221,session id=230  binlog reader init failed
    E1124 15:42:51.380913 23105 pika_client_conn.cc:160] ip_port: 10.10.59.236:38280, table: db0, command: "INFO", command_size: 4, arguments: 1, start_time(s): 1637739771, duration(us): 10969, do_duration_(us): 0
    W1124 15:42:59.279383 23082 pika_repl_server_conn.cc:466] Activate Binlog Sync failed partition=db0_0,ip_port=xx.xx.xx.245:9221,session id=0 Corruption: Init binlog file reader failedCorruption: partition=db0_0,ip_port=xx.xx.xx.245:9221,session id=231  binlog reader init failed
    E1124 15:43:06.643637 23112 pika_client_conn.cc:160] ip_port: xx.xx.xx.248:36965, table: db0, command: "info", command_size: 4, arguments: 1, start_time(s): 1637739786, duration(us): 10818, do_duration_(us): 0
    W1124 15:43:09.189357 23082 pika_repl_server_conn.cc:466] Activate Binlog Sync failed partition=db0_0,ip_port=xx.xx.xx.245:9221,session id=0 Corruption: Init binlog file reader failedCorruption: partition=db0_0,ip_port=xx.xx.xx.245:9221,session id=232  binlog reader init failed
    W1124 15:43:09.218698 23136 pika_rm.cc:780] send binlog to xx.xx.xx.245:9221 failed, NotFound: The xx.xx.xx.245:9221 fd cannot be found
    W1124 15:43:09.219070 23136 pika_rm.cc:780] send binlog to xx.xx.xx.245:9221 failed, NotFound: The xx.xx.xx.245:9221 fd cannot be found
    

    slave side log, pika.INFO

    Log file created at: 2021/11/24 15:36:01
    Running on machine: pika-03
    Log line format: [IWEF]mmdd hh:mm:ss.uuuuuu threadid file:line] msg
    I1124 15:36:01.708359  6538 pika.cc:193] Server at: ../conf/pika.conf
    I1124 15:36:01.708884  6538 pika_server.cc:176] Using Networker Interface: eth0
    I1124 15:36:01.709555  6538 pika_server.cc:219] host: xx.xx.xx.245 port: 9221
    I1124 15:36:01.709585  6538 pika_server.cc:95] Worker queue limit is 1350
    I1124 15:36:01.710130  6538 pika_binlog.cc:94] Binlog: Manifest file not exist, we create a new one.
    I1124 15:36:02.767280  6538 pika_partition.cc:87] db0 DB Success
    I1124 15:36:02.774467  6538 pika_server.cc:273] Pika Server going to start
    I1124 15:36:02.774777  6668 pika_repl_client.cc:146] Try Send Meta Sync Request to Master (xx.xx.xx.248:9221)
    I1124 15:36:02.775851  6556 pika_server.cc:618] Mark try connect finish
    I1124 15:36:02.775871  6556 pika_repl_client_conn.cc:146] Finish to handle meta sync response
    I1124 15:36:02.916692  6557 pika_repl_client_conn.cc:261] Partition: db0 Need To Try DBSync
    I1124 15:36:03.016842  6559 pika_repl_client_conn.cc:182] Partition: db0 Need Wait To Sync
    I1124 15:38:02.628144  6668 pika_partition.cc:236] Partition: db0 Information from dbsync info,  master_ip: xx.xx.xx.248, master_port: 9221, filenum: 108128, offset: 16589588, term: 0, index: 0
    I1124 15:38:02.628228  6668 pika_partition.cc:293] Partition: db0, Prepare change db from: ./db/db0_bak
    I1124 15:38:02.875358  6668 pika_partition.cc:314] Partition: db0, Change db success
    I1124 15:38:02.987746  6560 pika_repl_client_conn.cc:258] Partition: db0 TrySync Ok
    I1124 15:41:49.478904  6555 pika_repl_client_thread.cc:21] ReplClient Close conn, fd=124, ip_port=xx.xx.xx.248:11221
    W1124 15:41:49.478972  6555 pika_repl_client_thread.cc:31] Master conn disconnect : xx.xx.xx.248:11221 try reconnect
    I1124 15:41:59.031689  6668 pika_repl_client.cc:146] Try Send Meta Sync Request to Master (xx.xx.xx.248:9221)
    I1124 15:41:59.032572  6561 pika_server.cc:618] Mark try connect finish
    I1124 15:41:59.032599  6561 pika_repl_client_conn.cc:146] Finish to handle meta sync response
    I1124 15:41:59.172834  6562 pika_repl_client_conn.cc:258] Partition: db0 TrySync Ok
    I1124 15:41:59.214607  6555 pika_repl_client_thread.cc:21] ReplClient Close conn, fd=688, ip_port=xx.xx.xx.248:11221
    W1124 15:41:59.214651  6555 pika_repl_client_thread.cc:31] Master conn disconnect : xx.xx.xx.248:11221 try reconnect
    

    slave side pika.WARNING

    Log file created at: 2021/11/24 15:38:02
    Running on machine: pika-03
    Log line format: [IWEF]mmdd hh:mm:ss.uuuuuu threadid file:line] msg
    W1124 15:41:49.478972  6555 pika_repl_client_thread.cc:31] Master conn disconnect : xx.xx.xx.248:11221 try reconnect
    W1124 15:41:59.214651  6555 pika_repl_client_thread.cc:31] Master conn disconnect : xx.xx.xx.248:11221 try reconnect
    W1124 15:42:09.223732  6555 pika_repl_client_thread.cc:31] Master conn disconnect : xx.xx.xx.248:11221 try reconnect
    W1124 15:42:19.234695  6555 pika_repl_client_thread.cc:31] Master conn disconnect : xx.xx.xx.248:11221 try reconnect
    W1124 15:42:29.245780  6555 pika_repl_client_thread.cc:31] Master conn disconnect : xx.xx.xx.248:11221 try reconnect
    W1124 15:42:39.256779  6555 pika_repl_client_thread.cc:31] Master conn disconnect : xx.xx.xx.248:11221 try reconnect
    

    我这里能稳定重现这个问题,请问有谁遇到过相似的问题吗?

    opened by inspire365 18
  • fatal error: google/protobuf/message.h: No such file or directory

    fatal error: google/protobuf/message.h: No such file or directory

    从git上clone master版本,根据安装提示,安装了必要的依赖包,在make的时候报以下错误,提示文件或目录不存在 相关log如下: make[1]: Leaving directory /soft/pika_soft/pika/third/slash/slash' make[1]: Entering directory/soft/pika_soft/pika/third/pink/pink' In file included from src/pb_conn.cc:6:0: ../pink/include/pb_conn.h:12:37: fatal error: google/protobuf/message.h: No such file or directory #include "google/protobuf/message.h" ^ compilation terminated. GEN src/build_version.cc make[1]: Leaving directory /soft/pika_soft/pika/third/pink/pink' make[1]: Entering directory/soft/pika_soft/pika/third/pink/pink' In file included from src/pb_conn.cc:6:0: ../pink/include/pb_conn.h:12:37: fatal error: google/protobuf/message.h: No such file or directory #include "google/protobuf/message.h" ^ compilation terminated. GEN src/build_version.cc CXX src/build_version.o CXX src/server_thread.o CXX src/redis_conn.o CXX src/thread_pool.o CXX src/client_thread.o CXX src/pink_cli.o CXX src/pink_pubsub.o CXX src/dispatch_thread.o CXX src/server_socket.o CXX src/pink_thread.o CXX src/worker_thread.o CXX src/redis_cli.o CXX src/holy_thread.o CXX src/pink_epoll.o CXX src/pb_cli.o src/pb_cli.cc:9:37: fatal error: google/protobuf/message.h: No such file or directory #include <google/protobuf/message.h> ^ compilation terminated. make[1]: *** [src/pb_cli.o] Error 1 make[1]: Leaving directory `/soft/pika_soft/pika/third/pink/pink' make: *** [/soft/pika_soft/pika/third/pink/pink/lib/libpink.a] Error 2

    系统环境如下:

    cat /etc/redhat-release

    CentOS Linux release 7.6.1810 (Core)

    rpm -qa | grep snappy-devel

    snappy-devel-1.1.0-3.el7.x86_64

    rpm -qa | grep glog-devel

    glog-devel-0.3.3-8.el7.x86_64

    rpm -qa | grep gcc-c++

    gcc-c++-4.8.5-36.el7_6.2.x86_64

    gcc --version

    gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36) Copyright (C) 2015 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

    opened by oracle1521 17
  • pika启动报错

    pika启动报错

    版本:3.4.1-beta,gcc版本4.8.5 pika使用的编译版本,直接解压改配置文件,然后启动后报错 pika.FATAL日志打印如下: Log file created at: 2022/06/27 17:38:07 Running on machine: 10-195-19-73 Log line format: [IWEF]mmdd hh:mm:ss.uuuuuu threadid file:line] msg F0627 17:38:07.466754 20708 pika_server.cc:229] Start Rsync Error: bind port 10220 failed, Listen on this port to receive Master FullSync Data pika.INFO打印如下 Log file created at: 2022/06/27 17:38:07 Running on machine: 10-195-19-73 Log line format: [IWEF]mmdd hh:mm:ss.uuuuuu threadid file:line] msg I0627 17:38:07.458413 20708 pika.cc:193] Server at: conf/pika.conf I0627 17:38:07.459499 20708 pika_server.cc:176] Using Networker Interface: eth0 I0627 17:38:07.459726 20708 pika_server.cc:219] host: 10.195.19.73 port: 9220 I0627 17:38:07.459754 20708 pika_server.cc:95] Worker queue limit is 20100 I0627 17:38:07.460306 20708 pika_binlog.cc:94] Binlog: Manifest file not exist, we create a new one.

    请问这个是什么原因导致的?

    opened by gaowhope 15
  • pika内存使用过多

    pika内存使用过多

    目前pika使用每天会挂掉一次,机器是8c, 60g的,基本上每天都会因为out of memory被kill掉,下面是调用info命令的信息: `

    Server

    pika_version:2.2.5 pika_git_sha:e48ddac06cd53a501209d21d269b7d934e5b2ff4 pika_build_compile_date: Aug 22 2017 os:Linux 4.1.39-27.28.amzn1.x86_64 x86_64 arch_bits:64 process_id:17034 tcp_port:6379 thread_num:4 sync_thread_num:4 uptime_in_seconds:6418 uptime_in_days:1 config_file:/usr/local/pika/conf/pika.6379.conf

    Data

    db_size:6492113654 db_size_human:6191M compression:snappy used_memory:171024208 used_memory_human:163M db_memtable_usage:73656944 db_tablereader_usage:97367264

    Log

    log_size:20910169590 log_size_human:19941M safety_purge:write2file1135 expire_logs_days:7 expire_logs_nums:200 binlog_offset:1145 15763128

    Clients

    connected_clients:601

    Stats

    total_connections_received:3894 instantaneous_ops_per_sec:6 total_commands_processed:4096337 is_bgsaving:No, , 0 is_slots_reloading:No, , 0 is_scaning_keyspace:No is_compact:No compact_cron:

    Replication(MASTER)

    role:master connected_slaves:0

    Keyspace

    Time:1970-01-01 08:00:00

    kv keys:0 hash keys:0 list keys:0 zset keys:0 set keys:0 ` 目前我们链接数基本稳定在600个,之前是2000个链接,但发现600个链接数支撑时间反而没有2000个链接支撑的时间更长,我想问下,pika的缓存策略是什么样的,什么条件下会触发内存释放,我们数据一共才30G,内存60G,现在基本上每天都会爆掉,之前是30G的内存,基本上也是每天爆一次,是否存在内存泄漏。

    opened by xtudouh 12
  • python客户端pipeline问题

    python客户端pipeline问题

    问题描述: 使用python客户端pipeline入库时报错,但数据却入进去了.

    python程序: import redis r=redis.StrictRedis(host='10.40.0.70',port='9221') pr=redis.pipeline() pr.set('t1',1) pr.set('t2',2) pr.execute()

    Traceback (most recent call last): File "q5.py", line 7, in pr.execute() File "/usr/lib/python2.7/site-packages/redis/client.py", line 2879, in execute return execute(conn, stack, raise_on_error) File "/usr/lib/python2.7/site-packages/redis/client.py", line 2772, in execute_transaction response = self.parse_response(connection, '') File "/usr/lib/python2.7/site-packages/redis/client.py", line 2838, in parse_response self, connection, command_name, **options) File "/usr/lib/python2.7/site-packages/redis/client.py", line 680, in parse_response response = connection.read_response() File "/usr/lib/python2.7/site-packages/redis/connection.py", line 629, in read_response raise response redis.exceptions.ResponseError: Err unknown or unsupported command 'exec'

    查看数据库,数据却入进去了. 10.40.0.70:9221> keys *

    1. "t1"
    2. "t2"

    补充说明: redis-py版本:2.10.5 测试了将 r=redis.StrictRedis(host='10.40.0.70',port='9221') 的ip 端口改成本地redis的ip 端口就不会报错,因此推断客户端没有问题,想请问是不是pika不支持python客户端的批量?

    opened by Kegann 11
  • 如何解决进行keys操作时内存溢出的问题?

    如何解决进行keys操作时内存溢出的问题?

    之前使用redis时,内存已经30G+,所以准备改用pika。但是对数据库进行操作时,有时会用keys命令,使用keys命令时,得到如下错误:

    _File "/usr/lib/python2.6/site-packages/redis/client.py", line 568, in keys

    return self.execute_command('KEYS', pattern)
    

    File "/usr/lib/python2.6/site-packages/redis/client.py", line 330, in execute_command *_options File "/usr/lib/python2.6/site-packages/redis/client.py", line 312, in _execute_command return self.parse_response(command_name, *_options) File "/usr/lib/python2.6/site-packages/redis/client.py", line 390, in parse_response response = self._parse_response(command_name, catch_errors) File "/usr/lib/python2.6/site-packages/redis/client.py", line 349, in parse_response raise ResponseError(response) redis.exceptions.ResponseError: buf is too large

    已经试过修改源码中REDIS_MAX_MESSAGE的值,可是依旧报相同的错误。 也试过用scan命令进行扫库,但是效率比redis的scan差很多,不符合使用的要求

    opened by hjl0508 11
  • /usr/include/c++/4.8/bits/basic_string.h:583: undefined reference to `fLS::FLAGS_log_dir'

    /usr/include/c++/4.8/bits/basic_string.h:583: undefined reference to `fLS::FLAGS_log_dir'

    /usr/bin/ld: /home/gaoyixian/package/pika/src/pika.o: in function std::string::operator=(std::string&&)': /usr/include/c++/4.8/bits/basic_string.h:583: undefined reference tofLS::FLAGS_log_dir' collect2: error: ld returned 1 exit status make: *** [Makefile:215: pika] Error 1

    这个是编译报错,

    环境准备按官方的来的

    Debian (Ubuntu) 安装必要的lib $ sudo apt-get install libgflags-dev libsnappy-dev $ sudo apt-get install libprotobuf-dev protobuf-compiler (这个用的自己编译的3.4.1,目录在/usr/protobuf) $ sudo apt install libgoogle-glog-dev 安装gcc4.8或者以上 $ sudo apt-get install gcc-4.8 $ sudo apt-get install g++-4.8 如果机器gcc版本低于gcc4.8,需要切换到gcc4.8或者以上,下面为切换到4.8的方法 $ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 50 $ sudo update-alternatives --config gcc

    opened by Aneuuu 10
  • [Crash Report] Pika server 在读写混合负载下出现崩溃情况

    [Crash Report] Pika server 在读写混合负载下出现崩溃情况

    Hi,我们在对 Pika 进行压力测试,测试过程中发现 Pika 出现概率性挂掉的情况,通过检查 core 发现调用到 malloc_consolidate 时收到了 SIGABRT 信号导致,求问产生的原因以及如何解决 ~ pika 版本: 3.0.16

    core 信息

    [Thread debugging using libthread_db enabled]
    Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
    Core was generated by `/home/pika -c /home/pika2.conf'.
    Program terminated with signal SIGABRT, Aborted.
    #0  0x00007f36380f7e97 in __GI_raise (sig=<optimized out>) at ../sysdeps/unix/sysv/linux/raise.c:51
    51	../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
    [Current thread is 1 (Thread 0x7f361dffb700 (LWP 3310))]
    (gdb) bt
    #0  0x00007f36380f7e97 in __GI_raise (sig=<optimized out>) at ../sysdeps/unix/sysv/linux/raise.c:51
    #1  0x00007f36380f9801 in __GI_abort () at abort.c:81
    #2  0x00007f3638142897 in __libc_message (action=do_abort, fmt=<optimized out>) at ../sysdeps/posix/libc_fatal.c:113
    #3  0x00007f363814990a in malloc_consolidate (av=0x2) at malloc.c:4475
    #4  0x000000000000002c in ?? ()
    #5  0x00007f35e8b57df0 in ?? ()
    #6  0xcf8fe759bac38200 in ?? ()
    #7  0x00007f35b401f470 in ?? ()
    #8  0x00007f35e8b57e80 in ?? ()
    #9  0x000000000000471c in ?? ()
    #10 0x00007f35e8b57e90 in ?? ()
    #11 0x0000000000000000 in ?? ()
    

    配置信息 :

    调整了线程数以及write buffer size ,其他按照默认配置使用,无主从复制

    # Pika port
    port : 9221
    # Thread Number
    thread-num : 16
    # Thread Pool Size
    thread-pool-size : 16
    # Sync Thread Number
    sync-thread-num : 6
    # Item count of sync thread queue
    sync-buffer-size : 10
    # Pika log path
    log-path : ./log/
    # Pika glog level: only INFO and ERROR
    loglevel : info
    # Pika db path
    db-path : ./db/
    # Pika write-buffer-size
    write-buffer-size : 2684354560
    # Pika timeout
    timeout : 60
    # Requirepass
    requirepass :
    # Masterauth
    masterauth :
    # Userpass
    userpass :
    # User Blacklist
    userblacklist :
    # Dump Prefix
    dump-prefix :
    # daemonize  [yes | no]
    #daemonize : yes
    # slotmigrate  [yes | no]
    #slotmigrate : no
    # Dump Path
    dump-path : ./dump/
    

    服务器信息:

    Architecture:        x86_64
    CPU op-mode(s):      32-bit, 64-bit
    Byte Order:          Little Endian
    CPU(s):              48
    On-line CPU(s) list: 0-47
    Thread(s) per core:  2
    Core(s) per socket:  12
    Socket(s):           2
    NUMA node(s):        2
    Vendor ID:           GenuineIntel
    CPU family:          6
    Model:               63
    Model name:          Intel(R) Xeon(R) CPU E5-2680 v3 @ 2.50GHz
    Stepping:            2
    CPU MHz:             2494.423
    BogoMIPS:            4988.84
    Virtualization:      VT-x
    L1d cache:           32K
    L1i cache:           32K
    L2 cache:            256K
    L3 cache:            30720K
    NUMA node0 CPU(s):   0-11,24-35
    NUMA node1 CPU(s):   12-23,36-47
    Flags:               fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand lahf_lm abm cpuid_fault epb invpcid_single pti intel_ppin tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid cqm xsaveopt cqm_llc cqm_occup_llc dtherm arat pln pts
    
    opened by gtygo 1
  • merge submodule and update rocksdb using cmake

    merge submodule and update rocksdb using cmake

    goal:

    • merge pink 、slash、blackwidow into pika repository
    • update rocksdb.
    • support cmake

    env: ubuntu 22.04.1 LTS g++ version: g++ 11.3.0 rocksdb version : v7.7.3

    enhancement compile ubuntu rocksdb 
    opened by kernelai 4
Releases(v3.4.1)
  • v3.4.1(May 7, 2022)

    新增功能:

    • 支持quit命令。
    • 支持gcc 9.4.0 编译。
    • 多阶段编译减少docker image size。
    • release包对zlib、lz4、zstd压缩算法支持。

    bugfix

    • 修复线程池惊群问题。
    • 修复pubsub 出现coredump的问题。
    • 修复max-write-buffer-num 无法静态配置的问题。
    • 修复max-cache-statistic-keys 配置项重复的问题。

    注意事项:

    • 分片模式和经典模式不可兼容,请在启动时候配置好启动模式
    • 副本一致性可配置功能目前只支持分片模式。
    • 分片模式下取消slaveof 命令,使用pkcluster slotsslaveof 替代,详细见Pika分片命令
    • 经典模式下取消info log命令,info log 的binlog offset移至info replication,info log 的binlog size移至info data
    • 分片模式下取消info replication命令,用pkcluster info slot替代
    • 由于redis-cli 对于数据展示格式限制,对于pkcluster info slot的数据展示格式不够人性化。可以自行修改redis-cli代码 redis-cli modification
    • pika从2.1.4推荐需要使用gcc 4.8+版本编译,更新gcc后执行make distclean && make编译
    • pika3.1.0版本之后不再支持双主
    • pika3.1.0版本使用pb协议进行内部通信,不能直接和之前的版本建立主从关系,由低版本升级到pika3.1.0可以参照wiki进行升级(如何升级到Pika3.0如何升级到Pika3.1)
    • 由于zset精度的优化(自pika3.0.0起zset精度已与redis一致),如果你在低版本的pika(<3.0.0)中使用了geo功能,请在将其升级到pika3.0时不要直接使用nemo_to_blackwidow工具进行geo相关zset(其它结构的数据不受影响)数据的迁移,否则由于精度差异问题,迁移后的geo数据将损坏,建议使用客户端将geo相关zset数据重新导入。
    Source code(tar.gz)
    Source code(zip)
    pika-linux-x86_64-v3.4.1-beta.tar.bz2(103.92 MB)
    pika-migrate.tar.gz(47.67 MB)
  • v3.4.0(Dec 1, 2020)

    注意:

    这是个实验性质的版本,360内部没有在生产环境部署。请优先使用3.3.6版本。

    新增功能:

    • sharding模式下内置pika proxy组件,自动代理客户端请求到响应slot节点。
    • proxy支持根据业务压力配置后端连接数。
    • proxy 支持后端连接自动保活机制。
    • proxy 支持slot 共享后端连接。
    • proxy 支持客户端pipline功能。
    • proxy 支持slot 主从切换,slot 数据迁移功能。
    • proxy 支持hash tag功能。用户可以通过hash tag 把key存储到指定的slot。
    • pika 支持protocol buf 管理接口。

    注意事项:

    • 分片模式和经典模式不可兼容,请在启动时候配置好启动模式
    • 副本一致性可配置功能目前只支持分片模式。
    • 分片模式下取消slaveof 命令,使用pkcluster slotsslaveof 替代,详细见Pika分片命令
    • 经典模式下取消info log命令,info log 的binlog offset移至info replication,info log 的binlog size移至info data
    • 分片模式下取消info replication命令,用pkcluster info slot替代
    • 由于redis-cli 对于数据展示格式限制,对于pkcluster info slot的数据展示格式不够人性化。可以自行修改redis-cli代码 redis-cli modification
    • pika从2.1.4推荐需要使用gcc 4.8+版本编译,更新gcc后执行make distclean && make编译
    • pika3.1.0版本之后不再支持双主
    • pika3.1.0版本使用pb协议进行内部通信,不能直接和之前的版本建立主从关系,由低版本升级到pika3.1.0可以参照wiki进行升级(如何升级到Pika3.0如何升级到Pika3.1)
    • 由于zset精度的优化(自pika3.0.0起zset精度已与redis一致),如果你在低版本的pika(<3.0.0)中使用了geo功能,请在将其升级到pika3.0时不要直接使用nemo_to_blackwidow工具进行geo相关zset(其它结构的数据不受影响)数据的迁移,否则由于精度差异问题,迁移后的geo数据将损坏,建议使用客户端将geo相关zset数据重新导入。
    • 3.3.0 以后的版本包含了日志复制一致性的功能,建议使用该功能的用户使用版本3.3.6。
    • 为了保证服务的稳定,建议不使用日志复制一致性的用户升级至3.2.9。
    • 目前停止对3.0版本的维护
    Source code(tar.gz)
    Source code(zip)
  • v3.3.6(Oct 23, 2020)

    新增功能:

    • 增加在分片模式下计算slot时对hash tag的支持。
    • 增加在sharding模式下支持pkscanrange 、pkrscanrange、lpushrpop命令。客户端需要指定hash tag来保证所有操作在同一个slot上。
    • 增加rocksdb memtable 配置预分配内存大小的接口。

    Bug修复:

    • 修复分片模式下,配置slot num非2的幂次数目时,计算slot hash值与codis不一致的问题。
    • 修复哨兵使用pubsub命令可能导致coredump的问题。

    注意事项:

    • 分片模式和经典模式不可兼容,请在启动时候配置好启动模式
    • 副本一致性可配置功能目前只支持分片模式。
    • 分片模式下取消slaveof 命令,使用pkcluster slotsslaveof 替代,详细见Pika分片命令
    • 经典模式下取消info log命令,info log 的binlog offset移至info replication,info log 的binlog size移至info data
    • 分片模式下取消info replication命令,用pkcluster info slot替代
    • 由于redis-cli 对于数据展示格式限制,对于pkcluster info slot的数据展示格式不够人性化。可以自行修改redis-cli代码 redis-cli modification
    • pika从2.1.4推荐需要使用gcc 4.8+版本编译,更新gcc后执行make distclean && make编译
    • pika3.1.0版本之后不再支持双主
    • pika3.1.0版本使用pb协议进行内部通信,不能直接和之前的版本建立主从关系,由低版本升级到pika3.1.0可以参照wiki进行升级(如何升级到Pika3.0如何升级到Pika3.1)
    • 由于zset精度的优化(自pika3.0.0起zset精度已与redis一致),如果你在低版本的pika(<3.0.0)中使用了geo功能,请在将其升级到pika3.0时不要直接使用nemo_to_blackwidow工具进行geo相关zset(其它结构的数据不受影响)数据的迁移,否则由于精度差异问题,迁移后的geo数据将损坏,建议使用客户端将geo相关zset数据重新导入。
    • 3.3.0 以后的版本包含了日志复制一致性的功能,建议使用该功能的用户使用本版本。
    • 为了保证服务的稳定,建议不使用日志复制一致性的用户升级至3.2.9。
    • 目前停止对3.0版本的维护
    Source code(tar.gz)
    Source code(zip)
    pika-linux-x86_64-v3.3.6.tar.bz2(102.70 MB)
  • v3.3.5(Jul 7, 2020)

    性能优化:

    • 针对zcout/zrangebyscore/zremrangebyscore/zrank命令性能优化。感谢@yurongliao的贡献

    Bug修复:

    • 修复pink中holy thread错误关闭文件描述符导致rocksdb中sst文件 bad file description。建议3.2以后的版本升级到本版本。感谢@su47flying的贡献。

    注意事项:

    • 分片模式和经典模式不可兼容,请在启动时候配置好启动模式
    • 副本一致性可配置功能目前只支持分片模式。
    • 分片模式下取消slaveof 命令,使用pkcluster slotsslaveof 替代,详细见Pika分片命令
    • 经典模式下取消info log命令,info log 的binlog offset移至info replication,info log 的binlog size移至info data
    • 分片模式下取消info replication命令,用pkcluster info slot替代
    • 由于redis-cli 对于数据展示格式限制,对于pkcluster info slot的数据展示格式不够人性化。可以自行修改redis-cli代码 redis-cli modification
    • pika从2.1.4推荐需要使用gcc 4.8+版本编译,更新gcc后执行make distclean && make编译
    • pika3.1.0版本之后不再支持双主
    • pika3.1.0版本使用pb协议进行内部通信,不能直接和之前的版本建立主从关系,由低版本升级到pika3.1.0可以参照wiki进行升级(如何升级到Pika3.0如何升级到Pika3.1)
    • 由于zset精度的优化(自pika3.0.0起zset精度已与redis一致),如果你在低版本的pika(<3.0.0)中使用了geo功能,请在将其升级到pika3.0时不要直接使用nemo_to_blackwidow工具进行geo相关zset(其它结构的数据不受影响)数据的迁移,否则由于精度差异问题,迁移后的geo数据将损坏,建议使用客户端将geo相关zset数据重新导入。
    • 3.3.0 以后的版本包含了日志复制一致性的功能,建议使用该功能的用户使用本版本。
    • 为了保证服务的稳定,建议不使用日志复制一致性的用户升级至3.2.9。
    • 3.0仍会继续维护,目前已经彻底停止对2.X的支持
    Source code(tar.gz)
    Source code(zip)
    pika-linux-x86_64-v3.3.5.tar.bz2(102.41 MB)
  • v3.3.4(Jun 12, 2020)

    Bug修复:

    • 修复命令info replication中lag 计算溢出的问题。
    • 修复因网络丢包造成binlog同步阻塞未及时重连的问题。
    • 修复网络割接场景下,同步不能自动恢复的问题。
    • 修复分片模式下,不支持大写pkcluster系列命令的问题。

    注意事项:

    • 分片模式和经典模式不可兼容,请在启动时候配置好启动模式
    • 副本一致性可配置功能目前只支持分片模式。
    • 分片模式下取消slaveof 命令,使用pkcluster slotsslaveof 替代,详细见Pika分片命令
    • 经典模式下取消info log命令,info log 的binlog offset移至info replication,info log 的binlog size移至info data
    • 分片模式下取消info replication命令,用pkcluster info slot替代
    • 由于redis-cli 对于数据展示格式限制,对于pkcluster info slot的数据展示格式不够人性化。可以自行修改redis-cli代码 redis-cli modification
    • pika从2.1.4推荐需要使用gcc 4.8+版本编译,更新gcc后执行make distclean && make编译
    • pika3.1.0版本之后不再支持双主
    • pika3.1.0版本使用pb协议进行内部通信,不能直接和之前的版本建立主从关系,由低版本升级到pika3.1.0可以参照wiki进行升级(如何升级到Pika3.0如何升级到Pika3.1)
    • 由于zset精度的优化(自pika3.0.0起zset精度已与redis一致),如果你在低版本的pika(<3.0.0)中使用了geo功能,请在将其升级到pika3.0时不要直接使用nemo_to_blackwidow工具进行geo相关zset(其它结构的数据不受影响)数据的迁移,否则由于精度差异问题,迁移后的geo数据将损坏,建议使用客户端将geo相关zset数据重新导入。
    • 3.3.0 以后的版本包含了日志复制一致性的功能,建议使用该功能的用户使用本版本。
    • 为了保证服务的稳定,建议不使用日志复制一致性的用户升级至3.2.9。
    • 3.0仍会继续维护,目前已经彻底停止对2.X的支持
    Source code(tar.gz)
    Source code(zip)
    pika-linux-x86_64-v3.3.4.tar.bz2(102.42 MB)
  • v3.2.9beta(Jun 5, 2020)

    Rocksdb更新:

    • v3.2.9 基础上对Rocksdb 进行更新,Rocksdb 版本从5.9.2 升级至5.18.3,升级后的Rocksdb更加稳定。同时,所有原Pika接口保持不变,所有原Blackwidow 接口保持不变,继承3.2.9 以及之前所有优化。

    注意事项:

    • 分片模式和经典模式不可兼容,请在启动时候配置好启动模式
    • 副本一致性可配置功能目前只支持分片模式。
    • 分片模式下取消slaveof 命令,使用pkcluster slotsslaveof 替代,详细见Pika分片命令
    • 经典模式下取消info log命令,info log 的binlog offset移至info replication,info log 的binlog size移至info data
    • 分片模式下取消info replication命令,用pkcluster info slot替代
    • 由于redis-cli 对于数据展示格式限制,对于pkcluster info slot的数据展示格式不够人性化。可以自行修改redis-cli代码 redis-cli modification
    • pika从2.1.4推荐需要使用gcc 4.8+版本编译,更新gcc后执行make distclean && make编译
    • pika3.1.0版本之后不再支持双主
    • pika3.1.0版本使用pb协议进行内部通信,不能直接和之前的版本建立主从关系,由低版本升级到pika3.1.0可以参照wiki进行升级(如何升级到Pika3.0如何升级到Pika3.1)
    • 由于zset精度的优化(自pika3.0.0起zset精度已与redis一致),如果你在低版本的pika(<3.0.0)中使用了geo功能,请在将其升级到pika3.0时不要直接使用nemo_to_blackwidow工具进行geo相关zset(其它结构的数据不受影响)数据的迁移,否则由于精度差异问题,迁移后的geo数据将损坏,建议使用客户端将geo相关zset数据重新导入。
    • 为了保证服务的稳定,建议所有用户升级至3.2.9
    • 3.0仍会继续维护,目前已经彻底停止对2.X的支持
    Source code(tar.gz)
    Source code(zip)
    pika-linux-x86_64-v3.2.9beta.tar.bz2(102.44 MB)
  • v3.3.3(May 25, 2020)

    Bug修复:

    • 修复经典模式下由于使用std::vector越界有概率造成崩溃的问题。

    注意事项:

    • 分片模式和经典模式不可兼容,请在启动时候配置好启动模式
    • 副本一致性可配置功能目前只支持分片模式。
    • 分片模式下取消slaveof 命令,使用pkcluster slotsslaveof 替代,详细见Pika分片命令
    • 经典模式下取消info log命令,info log 的binlog offset移至info replication,info log 的binlog size移至info data
    • 分片模式下取消info replication命令,用pkcluster info slot替代
    • 由于redis-cli 对于数据展示格式限制,对于pkcluster info slot的数据展示格式不够人性化。可以自行修改redis-cli代码 redis-cli modification
    • pika从2.1.4推荐需要使用gcc 4.8+版本编译,更新gcc后执行make distclean && make编译
    • pika3.1.0版本之后不再支持双主
    • pika3.1.0版本使用pb协议进行内部通信,不能直接和之前的版本建立主从关系,由低版本升级到pika3.1.0可以参照wiki进行升级(如何升级到Pika3.0如何升级到Pika3.1)
    • 由于zset精度的优化(自pika3.0.0起zset精度已与redis一致),如果你在低版本的pika(<3.0.0)中使用了geo功能,请在将其升级到pika3.0时不要直接使用nemo_to_blackwidow工具进行geo相关zset(其它结构的数据不受影响)数据的迁移,否则由于精度差异问题,迁移后的geo数据将损坏,建议使用客户端将geo相关zset数据重新导入。
    • 为了保证服务的稳定,建议所有用户升级至3.2.9
    • 3.0仍会继续维护,目前已经彻底停止对2.X的支持
    Source code(tar.gz)
    Source code(zip)
    pika-linux-x86_64-v3.3.3.tar.bz2(102.43 MB)
  • v3.3.2(May 21, 2020)

    新功能:

    • 添加 Pika Logo。
    • 提升Zrangebyscore Zrevrangebyscore 接口性能,对于Zset存在大量元素时效果提升明显。
    • 提高 thread-pool-size 可配线程数上限从24提高至100。
    • 分片模式下Pkcluster info table 命令提供表级别的更详细统计信息,详见Pika分片命令
    • 分片模式下Pkcluster info slot 命令提供更细致的slot展示选项,详见Pika分片命令
    • 分片模式下支持处理多分片任务的命令,目前支持Mset,Mget,Exists,Del。

    Bug修复:

    • 修复从节点全同步之后,主从节点binlog偏移量不一致的问题。
    • 修复分片模式下Pkcluster slotsslaveof ip port all table_id 命令在多表场景下的兼容问题。

    注意事项:

    • 分片模式和经典模式不可兼容,请在启动时候配置好启动模式
    • 副本一致性可配置功能目前只支持分片模式。
    • 分片模式下取消slaveof 命令,使用pkcluster slotsslaveof 替代,详细见Pika分片命令
    • 经典模式下取消info log命令,info log 的binlog offset移至info replication,info log 的binlog size移至info data
    • 分片模式下取消info replication命令,用pkcluster info slot替代
    • 由于redis-cli 对于数据展示格式限制,对于pkcluster info slot的数据展示格式不够人性化。可以自行修改redis-cli代码 redis-cli modification
    • pika从2.1.4推荐需要使用gcc 4.8+版本编译,更新gcc后执行make distclean && make编译
    • pika3.1.0版本之后不再支持双主
    • pika3.1.0版本使用pb协议进行内部通信,不能直接和之前的版本建立主从关系,由低版本升级到pika3.1.0可以参照wiki进行升级(如何升级到Pika3.0如何升级到Pika3.1)
    • 由于zset精度的优化(自pika3.0.0起zset精度已与redis一致),如果你在低版本的pika(<3.0.0)中使用了geo功能,请在将其升级到pika3.0时不要直接使用nemo_to_blackwidow工具进行geo相关zset(其它结构的数据不受影响)数据的迁移,否则由于精度差异问题,迁移后的geo数据将损坏,建议使用客户端将geo相关zset数据重新导入。
    • 为了保证服务的稳定,建议所有用户升级至3.2.9
    • 3.0仍会继续维护,目前已经彻底停止对2.X的支持
    Source code(tar.gz)
    Source code(zip)
    pika-linux-x86_64-v3.3.2.tar.bz2(102.43 MB)
  • v3.3.1(Apr 10, 2020)

    Bug修复:

    • 修复了写请求对于table加锁时间过长的问题。
    • 修复分片模式下 pkcluster slotsslaveof 命令解析失败的问题。
    • 修复分片模式下开启副本一致性功能后,客户端命令有一定概率获得空的返回值的问题。

    注意事项:

    • 分片模式和经典模式不可兼容,请在启动时候配置好启动模式
    • 副本一致性可配置功能目前只支持分片模式。
    • 分片模式下取消slaveof 命令,使用pkcluster slotsslaveof 替代,详细见Pika分片命令
    • 经典模式下取消info log命令,info log 的binlog offset移至info replication,info log 的binlog size移至info data
    • 分片模式下取消info replication命令,用pkcluster info slot替代
    • 由于redis-cli 对于数据展示格式限制,对于pkcluster info slot的数据展示格式不够人性化。可以自行修改redis-cli代码 redis-cli modification
    • pika从2.1.4推荐需要使用gcc 4.8+版本编译,更新gcc后执行make distclean && make编译
    • pika3.1.0版本之后不再支持双主
    • pika3.1.0版本使用pb协议进行内部通信,不能直接和之前的版本建立主从关系,由低版本升级到pika3.1.0可以参照wiki进行升级(如何升级到Pika3.0如何升级到Pika3.1)
    • 由于zset精度的优化(自pika3.0.0起zset精度已与redis一致),如果你在低版本的pika(<3.0.0)中使用了geo功能,请在将其升级到pika3.0时不要直接使用nemo_to_blackwidow工具进行geo相关zset(其它结构的数据不受影响)数据的迁移,否则由于精度差异问题,迁移后的geo数据将损坏,建议使用客户端将geo相关zset数据重新导入。
    • 为了保证服务的稳定,建议所有用户升级至3.2.9
    • 3.0仍会继续维护,目前已经彻底停止对2.X的支持
    Source code(tar.gz)
    Source code(zip)
    pika-linux-x86_64-v3.3.1.tar.bz2(102.03 MB)
  • v3.3.0(Mar 27, 2020)

    新功能:

    注意事项:

    • 分片模式和经典模式不可兼容,请在启动时候配置好启动模式
    • 副本一致性可配置功能目前只支持分片模式。
    • 分片模式下取消slaveof 命令,使用pkcluster slotsslaveof 替代,详细见Pika分片命令
    • 经典模式下取消info log命令,info log 的binlog offset移至info replication,info log 的binlog size移至info data
    • 分片模式下取消info replication命令,用pkcluster info slot替代
    • 由于redis-cli 对于数据展示格式限制,对于pkcluster info slot的数据展示格式不够人性化。可以自行修改redis-cli代码 redis-cli modification
    • pika从2.1.4推荐需要使用gcc 4.8+版本编译,更新gcc后执行make distclean && make编译
    • pika3.1.0版本之后不再支持双主
    • pika3.1.0版本使用pb协议进行内部通信,不能直接和之前的版本建立主从关系,由低版本升级到pika3.1.0可以参照wiki进行升级(如何升级到Pika3.0如何升级到Pika3.1)
    • 由于zset精度的优化(自pika3.0.0起zset精度已与redis一致),如果你在低版本的pika(<3.0.0)中使用了geo功能,请在将其升级到pika3.0时不要直接使用nemo_to_blackwidow工具进行geo相关zset(其它结构的数据不受影响)数据的迁移,否则由于精度差异问题,迁移后的geo数据将损坏,建议使用客户端将geo相关zset数据重新导入。
    • 为了保证服务的稳定,建议所有用户升级至3.2.9
    • 3.0仍会继续维护,目前已经彻底停止对2.X的支持
    Source code(tar.gz)
    Source code(zip)
    pika-linux-x86_64-v3.3.0.tar.bz2(102.09 MB)
  • v3.2.9(Feb 28, 2020)

    Bug修复:

    • 修复网络异常场景下,std::string 追加操作导致的大量内存拷贝的问题。

    注意事项:

    • 分片模式和经典模式不可兼容,请在启动时候配置好启动模式
    • 经典模式下取消info log命令,info log 的binlog offset移至info replication,info log 的binlog size移至info data
    • 分片模式下取消info replication命令,用pkcluster info slot替代
    • 由于redis-cli 对于数据展示格式限制,对于pkcluster info slot的数据展示格式不够人性化。可以自行修改redis-cli代码 redis-cli modification
    • pika从2.1.4推荐需要使用gcc 4.8+版本编译,更新gcc后执行make distclean && make编译
    • pika3.1.0版本之后不再支持双主
    • pika3.1.0版本使用pb协议进行内部通信,不能直接和之前的版本建立主从关系,由低版本升级到pika3.1.0可以参照wiki进行升级(如何升级到Pika3.0如何升级到Pika3.1)
    • 由于zset精度的优化(自pika3.0.0起zset精度已与redis一致),如果你在低版本的pika(<3.0.0)中使用了geo功能,请在将其升级到pika3.0时不要直接使用nemo_to_blackwidow工具进行geo相关zset(其它结构的数据不受影响)数据的迁移,否则由于精度差异问题,迁移后的geo数据将损坏,建议使用客户端将geo相关zset数据重新导入。
    • 为了保证服务的稳定,建议所有用户升级至3.2.9
    • 3.0仍会继续维护,目前已经彻底停止对2.X的支持
    Source code(tar.gz)
    Source code(zip)
    pika-linux-x86_64-v3.2.9.tar.bz2(100.76 MB)
  • v3.2.8(Dec 20, 2019)

    优化&新特性

    • 新增compression 压缩选项LZ4, ZSTD,详见pika 配置文件说明。发布的二进制文件仅提供SNAPPY的静态库链接。如需要其他压缩方式,请安装相应压缩库自行编译。
    • 增加max-conn-rbuf-size 配置参数,用于调整单次命令请求最大缓存大小,详见pika 配置文件说明
    • 优化docker镜像编译流程。

    Bug修复:

    • 修复单次请求命令过大(通常超过64M)造成从库同步失败的问题.
    • 修复protobuf 序列化2G以上命令会出现崩溃的问题。
    • 修复输入DBSLAVEOF dbx no one命令后依然会不断尝试重连的问题。
    • 修复compact-cron, compact-interval不起作用的问题。
    • 修复旧版tcmalloc带来的内存占用过多导致OOM的问题(升级tcmalloc版本至2.7)。

    注意事项:

    • 分片模式和经典模式不可兼容,请在启动时候配置好启动模式
    • 经典模式下取消info log命令,info log 的binlog offset移至info replication,info log 的binlog size移至info data
    • 分片模式下取消info replication命令,用pkcluster info slot替代
    • 由于redis-cli 对于数据展示格式限制,对于pkcluster info slot的数据展示格式不够人性化。可以自行修改redis-cli代码 redis-cli modification
    • pika从2.1.4推荐需要使用gcc 4.8+版本编译,更新gcc后执行make distclean && make编译
    • pika3.1.0版本之后不再支持双主
    • pika3.1.0版本使用pb协议进行内部通信,不能直接和之前的版本建立主从关系,由低版本升级到pika3.1.0可以参照wiki进行升级(如何升级到Pika3.0如何升级到Pika3.1)
    • 由于zset精度的优化(自pika3.0.0起zset精度已与redis一致),如果你在低版本的pika(<3.0.0)中使用了geo功能,请在将其升级到pika3.0时不要直接使用nemo_to_blackwidow工具进行geo相关zset(其它结构的数据不受影响)数据的迁移,否则由于精度差异问题,迁移后的geo数据将损坏,建议使用客户端将geo相关zset数据重新导入。
    • 为了保证服务的稳定,建议所有用户升级至3.2.8
    • 3.0仍会继续维护,目前已经彻底停止对2.X的支持
    Source code(tar.gz)
    Source code(zip)
    pika-linux-x86_64-v3.2.8.tar.bz2(100.74 MB)
  • v3.0.16(Nov 25, 2019)

    新特性:

    注意事项

    • pika3.0.16暂不支持pika-hub
    • pika从2.1.4推荐需要使用gcc 4.8+版本编译,更新gcc后执行make distclean && make编译
    • pika 3.0.0版本替换了数据引擎以及对binlog做了升级,由低版本升级到pika3.0.0可以参照wiki进行升级(如何升级到Pika3.0)
    • 由于zset精度的优化(自pika3.0.0起zset精度已与redis一致),如果你在低版本的pika(<3.0.0)中使用了geo功能,请在将其升级到pika3.0时不要直接使用nemo_to_blackwidow工具进行geo相关zset(其它结构的数据不受影响)数据的迁移,否则由于精度差异问题,迁移后的geo数据将损坏,建议使用客户端将geo相关zset数据重新导入。
    • 为了保证服务的稳定,建议所有3.0.x用户升级至3.0.16,2.X用户升级至3.0.16
    Source code(tar.gz)
    Source code(zip)
    pika-linux-x86_64-v3.0.16.tar.bz2(142.05 MB)
  • v3.0.15(Nov 15, 2019)

    新特性:

    • 新增compression 压缩选项LZ4, ZSTD,详见pika 配置文件说明。发布的二进制文件仅提供SNAPPY的静态库链接。如需要其他压缩方式,请安装相应压缩库自行编译。

    Bug修复:

    • 修复在做BGSAVE期间执行INFO命令有概率导致死锁的问题。

    注意事项

    • pika3.0.15暂不支持pika-hub
    • pika从2.1.4推荐需要使用gcc 4.8+版本编译,更新gcc后执行make distclean && make编译
    • pika 3.0.0版本替换了数据引擎以及对binlog做了升级,由低版本升级到pika3.0.0可以参照wiki进行升级(如何升级到Pika3.0)
    • 由于zset精度的优化(自pika3.0.0起zset精度已与redis一致),如果你在低版本的pika(<3.0.0)中使用了geo功能,请在将其升级到pika3.0时不要直接使用nemo_to_blackwidow工具进行geo相关zset(其它结构的数据不受影响)数据的迁移,否则由于精度差异问题,迁移后的geo数据将损坏,建议使用客户端将geo相关zset数据重新导入。
    • 为了保证服务的稳定,建议所有3.0.x用户升级至3.0.15,2.X用户升级至2.3.8或3.0.15
    Source code(tar.gz)
    Source code(zip)
    pika-linux-x86_64-v3.0.15.tar.bz2(141.50 MB)
  • v3.2.7(Nov 7, 2019)

    优化&新特性

    • 增加CLIENT LIST 命令按addr或idle排序的功能,详见pika-差异化命令
    • 增加sync-window-size 配置参数,优化主从在网络存在高延迟场景下的同步性能,详见pika 配置文件说明

    Bug修复:

    • 修改启动RSYNC失败之后的输出日志。
    • 修复SLAVEOF和DBSLAVEOF命令参数校验不严谨问题。

    注意事项:

    • 分片模式和经典模式不可兼容,请在启动时候配置好启动模式
    • 经典模式下取消info log命令,info log 的binlog offset移至info replication,info log 的binlog size移至info data
    • 分片模式下取消info replication命令,用pkcluster info slot替代
    • 由于redis-cli 对于数据展示格式限制,对于pkcluster info slot的数据展示格式不够人性化。可以自行修改redis-cli代码 redis-cli modification
    • pika从2.1.4推荐需要使用gcc 4.8+版本编译,更新gcc后执行make distclean && make编译
    • pika3.1.0版本不再支持双主
    • pika3.1.0版本使用pb协议进行内部通信,不能直接和之前的版本建立主从关系,由低版本升级到pika3.1.0可以参照wiki进行升级(如何升级到Pika3.0如何升级到Pika3.1)
    • 由于zset精度的优化(自pika3.0.0起zset精度已与redis一致),如果你在低版本的pika(<3.0.0)中使用了geo功能,请在将其升级到pika3.0时不要直接使用nemo_to_blackwidow工具进行geo相关zset(其它结构的数据不受影响)数据的迁移,否则由于精度差异问题,迁移后的geo数据将损坏,建议使用客户端将geo相关zset数据重新导入。
    • 为了保证服务的稳定,建议所有用户升级至3.2.7
    • 3.0仍会继续维护,目前已经彻底停止对2.X的支持
    Source code(tar.gz)
    Source code(zip)
    pika-linux-x86_64-v3.2.7.tar.bz2(100.69 MB)
  • v3.0.14(Oct 23, 2019)

    Bug修复:

    • 修复PFADD 命令中给定键值的近似基数增长异常的问题。

    注意事项

    • pika3.0.14暂不支持pika-hub
    • pika从2.1.4推荐需要使用gcc 4.8+版本编译,更新gcc后执行make distclean && make编译
    • pika 3.0.0版本替换了数据引擎以及对binlog做了升级,由低版本升级到pika3.0.0可以参照wiki进行升级(如何升级到Pika3.0)
    • 由于zset精度的优化(自pika3.0.0起zset精度已与redis一致),如果你在低版本的pika(<3.0.0)中使用了geo功能,请在将其升级到pika3.0时不要直接使用nemo_to_blackwidow工具进行geo相关zset(其它结构的数据不受影响)数据的迁移,否则由于精度差异问题,迁移后的geo数据将损坏,建议使用客户端将geo相关zset数据重新导入。
    • 为了保证服务的稳定,建议所有3.0.x用户升级至3.0.14,2.X用户升级至2.3.8或3.0.14
    Source code(tar.gz)
    Source code(zip)
    pika-linux-x86_64-v3.0.14.tar.bz2(141.49 MB)
  • v3.2.6(Oct 21, 2019)

    Bug修复:

    • 修复配置SLAVEOF no one 命令后,CONFIG rewrite没有回写此次配置到配置文件问题。
    • 修复PKSETEXAT 命令在sharding模式下slot哈希错误的问题。
    • 修复PFADD 命令中给定键值的近似基数增长异常的问题。

    注意事项:

    • 分片模式和经典模式不可兼容,请在启动时候配置好启动模式
    • 经典模式下取消info log命令,info log 的binlog offset移至info replication,info log 的binlog size移至info data
    • 分片模式下取消info replication命令,用pkcluster info slot替代
    • 由于redis-cli 对于数据展示格式限制,对于pkcluster info slot的数据展示格式不够人性化。可以自行修改redis-cli代码 redis-cli modification
    • pika从2.1.4推荐需要使用gcc 4.8+版本编译,更新gcc后执行make distclean && make编译
    • pika3.1.0版本不再支持双主
    • pika3.1.0版本使用pb协议进行内部通信,不能直接和之前的版本建立主从关系,由低版本升级到pika3.1.0可以参照wiki进行升级(如何升级到Pika3.0如何升级到Pika3.1)
    • 由于zset精度的优化(自pika3.0.0起zset精度已与redis一致),如果你在低版本的pika(<3.0.0)中使用了geo功能,请在将其升级到pika3.0时不要直接使用nemo_to_blackwidow工具进行geo相关zset(其它结构的数据不受影响)数据的迁移,否则由于精度差异问题,迁移后的geo数据将损坏,建议使用客户端将geo相关zset数据重新导入。
    • 为了保证服务的稳定,建议所有用户升级至3.2.6
    • 3.0仍会继续维护,目前已经彻底停止对2.X的支持
    Source code(tar.gz)
    Source code(zip)
    pika-linux-x86_64-v3.2.6.tar.bz2(100.66 MB)
  • v3.2.5(Sep 30, 2019)

    Bug修复:

    • 修复KEYS命令通配符不起作用的问题。

    注意事项:

    • 分片模式和经典模式不可兼容,请在启动时候配置好启动模式
    • 经典模式下取消info log命令,info log 的binlog offset移至info replication,info log 的binlog size移至info data
    • 分片模式下取消info replication命令,用pkcluster info slot替代
    • 由于redis-cli 对于数据展示格式限制,对于pkcluster info slot的数据展示格式不够人性化。可以自行修改redis-cli代码 redis-cli modification
    • pika从2.1.4推荐需要使用gcc 4.8+版本编译,更新gcc后执行make distclean && make编译
    • pika3.1.0版本不再支持双主
    • pika3.1.0版本使用pb协议进行内部通信,不能直接和之前的版本建立主从关系,由低版本升级到pika3.1.0可以参照wiki进行升级(如何升级到Pika3.0如何升级到Pika3.1)
    • 由于zset精度的优化(自pika3.0.0起zset精度已与redis一致),如果你在低版本的pika(<3.0.0)中使用了geo功能,请在将其升级到pika3.0时不要直接使用nemo_to_blackwidow工具进行geo相关zset(其它结构的数据不受影响)数据的迁移,否则由于精度差异问题,迁移后的geo数据将损坏,建议使用客户端将geo相关zset数据重新导入。
    • 为了保证服务的稳定,建议所有用户升级至3.2.5
    • 3.0仍会继续维护,目前已经彻底停止对2.X的支持
    Source code(tar.gz)
    Source code(zip)
    pika-linux-x86_64-v3.2.5.tar.bz2(100.64 MB)
  • v3.2.4(Sep 29, 2019)

    Bug修复:

    • 修复INCR DECR INCRBY DECRBY INCRBYFLOAT命令同步到从库后会造成从库对应key丢失TTL属性的问题。

    注意事项:

    • 分片模式和经典模式不可兼容,请在启动时候配置好启动模式
    • 经典模式下取消info log命令,info log 的binlog offset移至info replication,info log 的binlog size移至info data
    • 分片模式下取消info replication命令,用pkcluster info slot替代
    • 由于redis-cli 对于数据展示格式限制,对于pkcluster info slot的数据展示格式不够人性化。可以自行修改redis-cli代码 redis-cli modification
    • pika从2.1.4推荐需要使用gcc 4.8+版本编译,更新gcc后执行make distclean && make编译
    • pika3.1.0版本不再支持双主
    • pika3.1.0版本使用pb协议进行内部通信,不能直接和之前的版本建立主从关系,由低版本升级到pika3.1.0可以参照wiki进行升级(如何升级到Pika3.0如何升级到Pika3.1)
    • 由于zset精度的优化(自pika3.0.0起zset精度已与redis一致),如果你在低版本的pika(<3.0.0)中使用了geo功能,请在将其升级到pika3.0时不要直接使用nemo_to_blackwidow工具进行geo相关zset(其它结构的数据不受影响)数据的迁移,否则由于精度差异问题,迁移后的geo数据将损坏,建议使用客户端将geo相关zset数据重新导入。
    • 为了保证服务的稳定,建议所有用户升级至3.2.4
    • 3.0仍会继续维护,目前已经彻底停止对2.X的支持
    Source code(tar.gz)
    Source code(zip)
    pika-linux-x86_64-v3.2.4.tar.bz2(100.64 MB)
  • v3.0.13(Sep 29, 2019)

    Bug修复:

    • 修复INCR DECR INCRBY DECRBY INCRBYFLOAT命令同步到从库后会造成从库对应key丢失TTL属性的问题。

    注意事项

    • pika3.0.13暂不支持pika-hub
    • pika从2.1.4推荐需要使用gcc 4.8+版本编译,更新gcc后执行make distclean && make编译
    • pika 3.0.0版本替换了数据引擎以及对binlog做了升级,由低版本升级到pika3.0.0可以参照wiki进行升级(如何升级到Pika3.0)
    • 由于zset精度的优化(自pika3.0.0起zset精度已与redis一致),如果你在低版本的pika(<3.0.0)中使用了geo功能,请在将其升级到pika3.0时不要直接使用nemo_to_blackwidow工具进行geo相关zset(其它结构的数据不受影响)数据的迁移,否则由于精度差异问题,迁移后的geo数据将损坏,建议使用客户端将geo相关zset数据重新导入。
    • 为了保证服务的稳定,建议所有3.0.x用户升级至3.0.13,2.X用户升级至2.3.8或3.0.13
    Source code(tar.gz)
    Source code(zip)
    pika-linux-x86_64-v3.0.13.tar.bz2(141.49 MB)
  • v2.3.8(Sep 29, 2019)

    Bug修复:

    • 修复INCR DECR INCRBY DECRBY INCRBYFLOAT命令同步到从库后会造成从库对应key丢失TTL属性的问题。

    注意事项

    • Pika 2.3.3版本添加了主从Server ID认证机制,无法之前的所有版本无法建立主从关系,升级请注意!
    • pika 2.3版本仅支持做2.3+版本的主从,请勿将pika 2.2和pika2.3建立主从
    • pika从2.1.4推荐需要使用gcc 4.8+版本编译,更新gcc后执行make distclean && make编译
    • 仅支持从2.1.0+版本平滑升级到2.3.0,如果从更早版本升级,请看2.1.0的注意事项
    • 为了服务的稳定,请所有使用2.3.8之前版本的用户尽快升级至2.3.8
    Source code(tar.gz)
    Source code(zip)
    pika-linux-x86_64-v2.3.8.tar.bz2(105.59 MB)
  • v3.2.3(Sep 24, 2019)

    优化&新特性:

    • 重构读写关键路径,写性能提高约10%,读性能提高约50%。
    • 增加max-client-response-size 配置项,限制命令返回数据的大小(防止类似keys *等命令由于返回值过大将内存耗尽)。

    Bug修复:

    • 修复调用网络库有极小概率会造成死锁的问题。
    • 修复rsync子进程未关闭父进程文件描述符的问题。
    • 修复主从模式下反复切主导致的binlog同步异常的问题。
    • 修复redis-cli使用pipeline形式命令失败的问题。

    注意事项:

    • 分片模式和经典模式不可兼容,请在启动时候配置好启动模式
    • 经典模式下取消info log命令,info log 的binlog offset移至info replication,info log 的binlog size移至info data
    • 分片模式下取消info replication命令,用pkcluster info slot替代
    • 由于redis-cli 对于数据展示格式限制,对于pkcluster info slot的数据展示格式不够人性化。可以自行修改redis-cli代码 redis-cli modification
    • pika从2.1.4推荐需要使用gcc 4.8+版本编译,更新gcc后执行make distclean && make编译
    • pika3.1.0版本不再支持双主
    • pika3.1.0版本使用pb协议进行内部通信,不能直接和之前的版本建立主从关系,由低版本升级到pika3.1.0可以参照wiki进行升级(如何升级到Pika3.0如何升级到Pika3.1)
    • 由于zset精度的优化(自pika3.0.0起zset精度已与redis一致),如果你在低版本的pika(<3.0.0)中使用了geo功能,请在将其升级到pika3.0时不要直接使用nemo_to_blackwidow工具进行geo相关zset(其它结构的数据不受影响)数据的迁移,否则由于精度差异问题,迁移后的geo数据将损坏,建议使用客户端将geo相关zset数据重新导入。
    • 为了保证服务的稳定,建议所有用户升级至3.0.12
    • 3.0仍会继续维护,目前已经彻底停止对2.X的支持
    Source code(tar.gz)
    Source code(zip)
    pika-linux-x86_64-v3.2.3.tar.bz2(100.65 MB)
  • v3.0.12(Sep 23, 2019)

    Bug修复:

    • 修复调用网络库有极小概率会造成死锁的问题。
    • 修复由于解析redis命令错误导致binlog同步异常的问题。
    • 修复由于使用Nagle算法个别请求可能造成40ms延迟的问题。
    • 修复退出pubsub线程导致崩溃的问题。

    注意事项

    • pika3.0.12暂不支持pika-hub
    • pika从2.1.4推荐需要使用gcc 4.8+版本编译,更新gcc后执行make distclean && make编译
    • pika 3.0.0版本替换了数据引擎以及对binlog做了升级,由低版本升级到pika3.0.0可以参照wiki进行升级(如何升级到Pika3.0)
    • 由于zset精度的优化(自pika3.0.0起zset精度已与redis一致),如果你在低版本的pika(<3.0.0)中使用了geo功能,请在将其升级到pika3.0时不要直接使用nemo_to_blackwidow工具进行geo相关zset(其它结构的数据不受影响)数据的迁移,否则由于精度差异问题,迁移后的geo数据将损坏,建议使用客户端将geo相关zset数据重新导入。
    • 为了保证服务的稳定,建议所有3.0.x用户升级至3.0.12,2.X用户升级至2.3.6或3.0.12
    Source code(tar.gz)
    Source code(zip)
    pika-linux-x86_64-v3.0.12.tar.bz2(141.56 MB)
  • v3.2.2(Aug 16, 2019)

    Bug修复:

    • 分片模式下支持Del, Mset, Mget, Exists命令,详见 Slot Commands

    注意事项:

    • 分片模式和经典模式不可兼容,请在启动时候配置好启动模式
    • 经典模式下取消info log命令,info log 的binlog offset移至info replication,info log 的binlog size移至info data
    • 分片模式下取消info replication命令,用pkcluster info slot替代
    • 由于redis-cli 对于数据展示格式限制,对于pkcluster info slot的数据展示格式不够人性化。可以自行修改redis-cli代码 redis-cli modification
    • pika从2.1.4推荐需要使用gcc 4.8+版本编译,更新gcc后执行make distclean && make编译
    • pika3.1.0版本不再支持双主
    • pika3.1.0版本使用pb协议进行内部通信,不能直接和之前的版本建立主从关系,由低版本升级到pika3.1.0可以参照wiki进行升级(如何升级到Pika3.0如何升级到Pika3.1)
    • 由于zset精度的优化(自pika3.0.0起zset精度已与redis一致),如果你在低版本的pika(<3.0.0)中使用了geo功能,请在将其升级到pika3.0时不要直接使用nemo_to_blackwidow工具进行geo相关zset(其它结构的数据不受影响)数据的迁移,否则由于精度差异问题,迁移后的geo数据将损坏,建议使用客户端将geo相关zset数据重新导入。
    • 为了保证服务的稳定,建议所有用户升级至3.0.11
    • 3.0仍会继续维护,目前已经彻底停止对2.X的支持
    Source code(tar.gz)
    Source code(zip)
    pika-linux-x86_64-v3.2.2.tar.bz2(136.25 MB)
  • v3.2.1(Aug 14, 2019)

    新特性:

    • 分片模式下支持哨兵
    • 分片模式下支持Slaveof命令,详见 Slot Commands
    • 新增Redis 5.0支持的ZPopMax/ZPopMin命令, 使用方式与Redis完全一致
    • 慢日志记录更多的信息(例如DB名称,命令长度,参数数量等), 方便排查问题
    • Info Data中新增db_fatal, db_fatal_msg字段用于监控Pika下所有Rocksdb的异常状态
    • Blackwidow层面实现全新的LRUCache, 使用LRUCache数据结构相关接口性能会有大幅度的提升(例如用redis-benchmark测SPop, QPS从5w提升到12w+)

    Bug修复:

    • 修复PubSub场景下调用Ping,会返回报错的问题
    • 修复Pika多Key命令不能保证原子性的问题(例如Del, MSet等)
    • 修复之前版本Info信息中去掉了read_only导致监控异常的问题

    注意事项:

    • 分片模式和经典模式不可兼容,请在启动时候配置好启动模式
    • 经典模式下取消info log命令,info log 的binlog offset移至info replication,info log 的binlog size移至info data
    • 分片模式下取消info replication命令,用pkcluster info slot替代
    • 由于redis-cli 对于数据展示格式限制,对于pkcluster info slot的数据展示格式不够人性化。可以自行修改redis-cli代码 redis-cli modification
    • pika从2.1.4推荐需要使用gcc 4.8+版本编译,更新gcc后执行make distclean && make编译
    • pika3.1.0版本不再支持双主
    • pika3.1.0版本使用pb协议进行内部通信,不能直接和之前的版本建立主从关系,由低版本升级到pika3.1.0可以参照wiki进行升级(如何升级到Pika3.0如何升级到Pika3.1)
    • 由于zset精度的优化(自pika3.0.0起zset精度已与redis一致),如果你在低版本的pika(<3.0.0)中使用了geo功能,请在将其升级到pika3.0时不要直接使用nemo_to_blackwidow工具进行geo相关zset(其它结构的数据不受影响)数据的迁移,否则由于精度差异问题,迁移后的geo数据将损坏,建议使用客户端将geo相关zset数据重新导入。
    • 为了保证服务的稳定,建议所有用户升级至3.0.11
    • 3.0仍会继续维护,目前已经彻底停止对2.X的支持
    Source code(tar.gz)
    Source code(zip)
    pika-linux-x86_64-v3.2.1.tar.bz2(138.08 MB)
  • v3.0.11(Aug 14, 2019)

    Bug修复:

    • 修复全同步替换DB时执行Info命令可能导致Pika崩溃的问题
    • 修复一主多从场景下,某一从库网络不稳定可能造成所有从库中断同步并无法重建同步关系的问题

    注意事项

    • pika3.0.11暂不支持pika-hub
    • pika从2.1.4推荐需要使用gcc 4.8+版本编译,更新gcc后执行make distclean && make编译
    • pika 3.0.0版本替换了数据引擎以及对binlog做了升级,由低版本升级到pika3.0.0可以参照wiki进行升级(如何升级到Pika3.0)
    • 由于zset精度的优化(自pika3.0.0起zset精度已与redis一致),如果你在低版本的pika(<3.0.0)中使用了geo功能,请在将其升级到pika3.0时不要直接使用nemo_to_blackwidow工具进行geo相关zset(其它结构的数据不受影响)数据的迁移,否则由于精度差异问题,迁移后的geo数据将损坏,建议使用客户端将geo相关zset数据重新导入。
    • 为了保证服务的稳定,建议所有3.0.x用户升级至3.0.11,2.X用户升级至2.3.6或3.0.11
    Source code(tar.gz)
    Source code(zip)
    pika-linux-x86_64-v3.0.11.tar.bz2(141.29 MB)
  • v2.3.7(Aug 14, 2019)

    Bug修复:

    • 修复LRange不释放Snapshots导致磁盘空间无法正常回收的问题
    • 修复一主多从场景下,某一从库网络不稳定可能造成所有从库中断同步并无法重建同步关系的问题

    注意事项

    • Pika 2.3.3版本添加了主从Server ID认证机制,无法之前的所有版本无法建立主从关系,升级请注意!
    • pika 2.3版本仅支持做2.3+版本的主从,请勿将pika 2.2和pika2.3建立主从
    • pika从2.1.4推荐需要使用gcc 4.8+版本编译,更新gcc后执行make distclean && make编译
    • 仅支持从2.1.0+版本平滑升级到2.3.0,如果从更早版本升级,请看2.1.0的注意事项
    Source code(tar.gz)
    Source code(zip)
    pika-linux-x86_64-v2.3.7.tar.bz2(105.59 MB)
  • v3.2.0(Jul 22, 2019)

    新特性:

    Bug修复:

    • 修复pubsub线程退出时崩溃的问题
    • 修复多线程同时执行config rewrite命令导致崩溃的问题
    • 修复经典模式下pika级联(即是主又是从)无法同步binlog的问题
    • 修复高版本向低版本同步时,低版本执行不支持的命令导致崩溃的问题

    注意事项:

    • 分片模式和经典模式不可兼容,请在启动时候配置好启动模式

    • 经典模式下取消info log命令,info log 的binlog offset移至info replication,info log 的binlog size移至info data

    • 分片模式下取消info replication命令,用pkcluster info slot替代

    • 由于redis-cli 对于数据展示格式限制,对于pkcluster info slot的数据展示格式不够人性化。可以自行修改redis-cli代码 redis-cli modification

    • pika从2.1.4推荐需要使用gcc 4.8+版本编译,更新gcc后执行make distclean && make编译

    • pika3.1.0版本不再支持双主

    • pika3.1.0版本使用pb协议进行内部通信,不能直接和之前的版本建立主从关系,由低版本升级到pika3.1.0可以参照wiki进行升级(如何升级到Pika3.0如何升级到Pika3.1)

    • 由于zset精度的优化(自pika3.0.0起zset精度已与redis一致),如果你在低版本的pika(<3.0.0)中使用了geo功能,请在将其升级到pika3.0时不要直接使用nemo_to_blackwidow工具进行geo相关zset(其它结构的数据不受影响)数据的迁移,否则由于精度差异问题,迁移后的geo数据将损坏,建议使用客户端将geo相关zset数据重新导入。

    • 为了保证服务的稳定,建议所有用户升级至3.0.10

    • 3.0仍会继续维护,目前已经彻底停止对2.X的支持

    Source code(tar.gz)
    Source code(zip)
    pika-linux-x86_64-v3.2.0.tar.bz2(137.84 MB)
  • v3.1.1(Jun 27, 2019)

    Bug修复

    • 修复配置文件中配置了compact-cron但是不生效的问题
    • 修复同步时第一个binlog文件头部被填充了0x20,再读取这个文件时解析可能导致崩溃的问题

    优化 & 新特性:

    • 代码层面优化了主从同步状态机,提升了同步的效率
    • 移除了submodule下的protobuf库,编译的时候还是用系统的protobuf
    • 新增dbslaveof命令用来指定某个db的binlog偏移量进行同步(多db版本部分命令变化文档请参考Pika3.1.0多库版命令、参数变化参考

    注意事项

    • pika从2.1.4推荐需要使用gcc 4.8+版本编译,更新gcc后执行make distclean && make编译
    • pika3.1.0版本不再支持双主
    • pika3.1.0版本使用pb协议进行内部通信,不能直接和之前的版本建立主从关系,由低版本升级到pika3.1.0可以参照wiki进行升级(如何升级到Pika3.0如何升级到Pika3.1)
    • 由于zset精度的优化(自pika3.0.0起zset精度已与redis一致),如果你在低版本的pika(<3.0.0)中使用了geo功能,请在将其升级到pika3.0时不要直接使用nemo_to_blackwidow工具进行geo相关zset(其它结构的数据不受影响)数据的迁移,否则由于精度差异问题,迁移后的geo数据将损坏,建议使用客户端将geo相关zset数据重新导入。
    • 为了保证服务的稳定,建议所有用户升级至3.0.9
    • 3.0仍会继续维护,2.X不再维护,7月彻底停止对2.X的支持
    Source code(tar.gz)
    Source code(zip)
    pika-linux-x86_64-v3.1.1.tar.bz2(129.43 MB)
  • v3.0.10(Jun 28, 2019)

    Bug修复:

    • 修复BinlogParser未经初始化导致解析同步出错的问题
    • 修复同步时第一个binlog文件头部被填充了0x20,再读取这个文件时解析可能导致崩溃的问题

    注意事项

    • pika3.0.10暂不支持pika-hub
    • pika从2.1.4推荐需要使用gcc 4.8+版本编译,更新gcc后执行make distclean && make编译
    • pika 3.0.0版本替换了数据引擎以及对binlog做了升级,由低版本升级到pika3.0.0可以参照wiki进行升级(如何升级到Pika3.0)
    • 由于zset精度的优化(自pika3.0.0起zset精度已与redis一致),如果你在低版本的pika(<3.0.0)中使用了geo功能,请在将其升级到pika3.0时不要直接使用nemo_to_blackwidow工具进行geo相关zset(其它结构的数据不受影响)数据的迁移,否则由于精度差异问题,迁移后的geo数据将损坏,建议使用客户端将geo相关zset数据重新导入。
    • 为了保证服务的稳定,建议所有3.0.x用户升级至3.0.10,2.X用户升级至2.3.6或3.0.10
    Source code(tar.gz)
    Source code(zip)
    pika-linux-x86_64-v3.0.10.tar.bz2(141.56 MB)
Owner
OpenAtomFoundation
OpenAtomFoundation
Orangescrum is a simple yet powerful free and open source project management software that helps team to organize their tasks, projects and deliver more.

Free, open source Project Management software Introduction Orangescrum is the simple yet powerful free and open source project management software tha

Orangescrum 110 Dec 30, 2022
Orkestra is a library of infrastructure and architecture helpers for creating CQRS applications

Orkestra Orkestra is an opinionated framework with a plethora of recommendations on architectural design that we use internally at Morebec to develop

Morébec 2 Aug 18, 2021
Nuber is an open source container management platform it provides a front end to manage your own cloud infrastructure, using Linux Containers virtualization technology

Nuber is an open source container management platform it provides a front end to manage your own cloud infrastructure, using Linux Containers virtualization technology

null 33 Dec 14, 2022
This script allows to bypass Oracle Cloud Infrastructure 'Out of host capacity' error immediately when additional OCI capacity will appear in your Home Region / Availability domain.

Resolving Oracle Cloud "Out of Capacity" issue and getting free VPS with 4 ARM cores / 24GB of memory Very neat and useful configuration was recently

Alexander Hitrov 323 Jan 6, 2023
A DDD microservice did in laravel, to test infrastructure

A DDD microservice did in laravel, to test infrastructure

pegons 3 Jul 8, 2022
A Laravel artisan based package to create the AWS (SES + SNS) infrastructure to receive email event notifications with Http/Https endpoint.

Laravel SES Tracking Setup the AWS infrastructure to handle email events using SES/SNS and http/s endpoints with a single Laravel artisan command. Thi

null 11 Apr 26, 2022
From the team that brought you laravel-random-command comes another gem!

?? Why require one if you can require them all? From the team that brought you laravel-random-command comes another gem! Requiring all our packages se

Spatie 46 Oct 5, 2022
Automate aggregation tools to standard alerts from SAP PI/PO (CBMA) for internal support team

✅ PiAlert PiAlert is system for automating the work of SAP PI/PO support team via aggregation of alerts (CBMA messages). Language support: English Рус

Ivan Shashurin 3 Dec 2, 2022
WHMCS Report for Support Team Demand

This report attempts to single out customers who require a lot of effort from the support team and do not generate equivalent gains.

Márcio Dias 4 Aug 23, 2022
A complete solution for group projects in organizations that lets you track your work in any scenario. Working in a team is a cumbersome task, ease it using our project management system.

SE-Project-Group24 What is Evolo? Evolo is Dashboard based Project Management System. A complete solution for group projects in organizations that let

Devanshi Savla 2 Oct 7, 2022
A small, modern, PSR-7 compatible PSR-17 and PSR-18 network library for PHP, inspired by Go's net package.

Net A small, modern, PSR-7 compatible PSR-17 and PSR-18 network library for PHP, inspired by Go's net package. Features: No hard dependencies; Favours

Minibase 16 Jun 7, 2022
A small, modern, PSR-7 compatible PSR-17 and PSR-18 network library for PHP, inspired by Go's net package.

Net A small, modern, PSR-7 compatible PSR-17 and PSR-18 network library for PHP, inspired by Go's net package. Features: No hard dependencies; Favours

Minibase 16 Jun 7, 2022
Laravel Blog Package. Easiest way to add a blog to your Laravel website. A package which adds wordpress functionality to your website and is compatible with laravel 8.

Laravel Blog Have you worked with Wordpress? Developers call this package wordpress-like laravel blog. Give our package a Star to support us ⭐ ?? Inst

Binshops 279 Dec 28, 2022
An alternative Redis session handler for PHP featuring per-session locking and session fixation protection

RedisSessionHandler An alternative Redis session handler featuring session locking and session fixation protection. News phpredis v4.1.0 (released on

Marcel Hernandez 117 Oct 19, 2022
This is an implementation of PSR specification. It allows you to send and consume message with Redis store as a broker.

This is an implementation of PSR specification. It allows you to send and consume message with Redis store as a broker.

Enqueue 35 Nov 4, 2022
Proxy based Redis cluster solution supporting pipeline and scaling dynamically

Codis is a proxy based high performance Redis cluster solution written in Go. It is production-ready and widely used at wandoujia.com and many compani

null 12.7k Jan 2, 2023
A simple social groups compatible with ActivityPub.

A simple social groups compatible with ActivityPub.

wxw.moe 23 Dec 2, 2022
The fastest way to make a powerful JSON:API compatible Rest API with Laravel.

The first fully customizable Laravel JSON:API builder. "CRUD" and protect your resources with 0 (zero) extra line of code. Installation You can instal

BinarCode 394 Dec 23, 2022