- camellia-redis-spring-boot-starters, support spring-boot3
- camellia-cache-spring-boot-starters, support spring-boot3
- camellia-delay-queue-spring-boot-starters, support spring-boot3
- camellia-feign-spring-boot-starters, support spring-boot3
- camellia-hbase-spring-boot-starters, support spring-boot3
- camellia-id-gen-spring-boot-starters, support spring-boot3
- camellia-hot-key-spring-boot-starters, support spring-boot3
- camellia-config-spring-boot-starters, support spring-boot3
- camellia-redis-proxy-spring-boot-starters, support spring-boot3
- none
- none
- camellia-redis-proxy support
PROXY
command, so you can use any proxy node to manager other proxy nodes' config, sometimes to replace nacos/etcd as the config center - camellia-redis-proxy support CuckooFilter commands
- camellia-redis-proxy optimize error reply in sharding-pubsub
- camellia-redis-proxy optimize idle-check logic
- camellia-redis-proxy,when use camellia-dashboard, replace HttpURLConnection to OkHttpClient as the http-client
- camellia-redis-proxy,when use camellia-dashboard, support use v2-api, reduce the http body size
- camellia-redis-proxy,when use local/complex mode, add trim logic when read config file
- camellia-redis-proxy,
info memory
add netty_direct_memory field
- camellia-redis-proxy, fix memory leak when proxy_protocol_v2 enabled
- camellia-redis-proxy, fix MonitorProxyPlugin NPE for unknown command
- provide camellia-redis-proxy-nacos-bootstrap, so Operations Engineer can use nacos to manager camellia-redis-proxy cluster without java development
- provide camellia-redis-proxy-etcd-bootstrap, so Operations Engineer can use etcd to manager camellia-redis-proxy cluster without java development
- camelia-feign, add util GlobalCamelliaFeignEnv, so you can calc load balance code before request when use hash policy
- camellia-redis-proxy console add api
/shutdownUpstreamClient?url=redis://@127.0.0.1:6379
, so you can shutdown upstream client - camellia-redis-proxy support shard-pubsub, support
SSUBSCRIBE/SUNSUBSCRIBE/SPUBLISH
commands - camellia-redis-proxy support
FUNCTION/TFUNCTION
commands - camellia-redis-proxy support
SCRIPT KILL
command - camellia-redis-proxy support
EXPIRETIME/PEXPIRETIME/LCS/SINTERCARD/SORT_RO/BITFIELD_RO
commands
- none
- camellia-redis-proxy,eval_ro/evalsha_ro commands do not route correct when upstream route is custom-sharding or redis-cluster
- camellia-redis-proxy,eval/eval_sha/eval_ro/evasha_ro, if num-keys is 0 and upstream route is redis-cluster, return error reply
- camellia-redis-proxy support custom UpstreamAddrConverter, so you can modify upstream redis addr, a typical use case is if proxy and redis are deployed on the same machine, access local node using uds or 127.0.0.1, other nodes using lan ip
- camellia-feign,DynamicCamelliaFeignDynamicOptionGetter support configure load balance policy
- none
- camelia-config/camellia-console support custom ConfigChangeInterceptor to control config change flow
- camellia-redis-proxy enhance plugin, you can rewrite route by plugin to every command
- camellia-redis-proxy add build-in plugin
HotKeyRouteRewriteProxyPlugin
, which can rewrite route by hot-key - camellia-redis-proxy support unix-domain-socket, both client to proxy and proxy to upstream redis
- camellia-redis-proxy config max clients, if reached, send error reply before connection closed, and support configure delay close
- optimize the performance of CamelliaStrictIdGen's peekId api
- camellia-redis-proxy upstream redis conection modify default config of sendbuf/rcvbuf from 10M to 6M
- camellia-redis-proxy optimize MultiWriteProxyPlugin
- none
- none
- none
- camellia-delay-queue, ttl param of send msg, should calc from msg delay trigger time, rather than msg send time, thanks fuhaodev find this bug
- camellia-redis-proxy support
client info
andclient list
command - camellia-redis-proxy support
proxy_protocol
to get real client ip in 4-layer-proxy
- refactor FileUtil to FileUtils
- camellia-redis-proxy avoid MOVED/ASK error info send to client
- camellia-redis-proxy support PKCS8 SSL/TLS certs
- camellia-redis-proxy frontend tls bidirectional authentication not effective, thanks @InputOutputZ find this bug
- camellia-redis-proxy run in fatjar, some config file read fail
- camellia-redis-proxy support tls between client and proxy
- camellia-redis-proxy support tls between proxy and upstream redis
- camellia-redis-proxy use command
info upstream-info
,redis-sentinel
supportsentinelUserName
andsentinelPassword
- camellia-id-gen provide CamelliaStrictIdGen2, which only dependency on redis and ntp timestamp
- camellia-redis-proxy support local json config
- camellia-redis-proxy support disabled console by setting console-port=0
- http-accelerate-proxy transport of quic, use BBR as default congestion control algorithm
- optimize camellia-redis-proxy preheat logic, if preheat fail, proxy startup fail
- camellia-redis-proxy add schedule renew logic when proxy pass redis-sentinel
- camellia-redis-proxy redis-sentinel/redis-proxies support self-adaption renew
- camellia-redis-proxy random console port not available, bug from 1.2.11
- camellia-redis-proxy need mask sentinelPassword when logging
- camellia-redis-proxy fix NPE when redis-cluster fail-over
- camellia-redis-proxy do not renew upstream addrs when proxy pass to redis-sentinel and in
+reset-master
case
- camellia-http-accelerate-proxy support setting backupServer
- camellia-redis-proxy use nacos as config server, support json/properties, default properties
- camellia-redis-proxy support ectd as config server, support json/properties, default properties
- camellia-hot-key-server support ectd as config server, support json/properties, default json
- camellia-hot-key support
not_contains
rule type - camellia-redis-proxy provide MultiTenantProxyRouteConfUpdater and MultiTenantClientAuthProvider
- camellia-htt-accelerate-proxy support setting congestion.control.algorithm of quic
- camellia-redis-proxy multi-write-mode migrate from yml to ProxyDynamicConf, support tenant level config, support dynamic config
ProxyDynamicConfLoader
rename methodupdateInitConf
toinit
camellia-redis-proxy-nacos
rename artifactId tocamellia-redis-proxy-config-nacos
com.netease.nim.camellia.redis.proxy.nacos.NacosProxyDynamicConfLoader
rename tocom.netease.nim.camellia.redis.proxy.config.nacos.NacosProxyDynamicConfLoader
- camellia-redis-proxy
select 0
command should reply ok when upstream is redis-cluster, bug from 1.2.1
- camellia-http-accelerate-proxy,proxy and transport-server support setting bind host, default 0.0.0.0
- camellia-http-accelerate-proxy,transport-route and upstream-route support disabled
- camellia-redis3(CamelliaRedisTemplate), support setting auth username(redis-standalone、redis-sentinel、redis-sentinel-slaves、redis-cluster)
- camellia-redis(CamelliaRedisTemplate), redis-sentinel、redis-sentinel-slaves support setting sentinelPassword
- camellia-redis3(CamelliaRedisTemplate), redis-sentinel、redis-sentinel-slaves support setting sentinelUserName and sentinelPassword
- camellia-redis-proxy, redis-sentinel、redis-sentinel-slaves support setting sentinelUserName and sentinelPassword
- camellia-redis3(CamelliaRedisTemplate),support zmscore
- camellia-http-accelerate-proxy support quic as the transport protocol
- camellia-http-accelerate-proxy support compress for http-content
- camellia-codec provide XProps
- camellia-hot-key-sdk use ConcurrentHashMapCollector, update collector full log from error to info
- optimize response-http-header=connection for http-console and http-accelerate-proxy
- use direct-buffer optimize pack of camellia-hot-key and camellia-http-accelerate-proxy
- camellia-hot-key support suffix match rule
- none
- camellia-tools add CamelliaSegmentStatistics tools
- camellia-cache add a global on-off config
- provide camellia-http-console module, a simple http-server based on netty
- CamelliaRedisTemplate support setting custom RedisInterceptor, so you can import CamelliaHotKeyMonitorSdk
- provide camellia-codec module
- provide camellia-http-accelerate-proxy module
- camellia-redis-proxy's GlobalRedisProxyEnv provide ProxyShutdown to unbind port and release upstream redis connection
- camellia-redis-proxy use camellia-http-console
- camellia-hot-key-server use camellia-http-console
- camellia-hot-key use camellia-codec
- camellia-hot-key-sdk support setting collector type, include Caffeine(default)and ConcurrentLinkedHashMap and ConcurrentHashMap
- camellia-hot-key-sdk support setting async collect, default in sync mode
- camellia-redis-proxy logging upstream failed command, the resource do not mask password
- camellia-hot-key-sdk get incorrect checkThreshold field of hot-key-config的checkThreshold(do not affect function)
- camellia-hot-key-server fix incorrect hot key calculate logic
- camellia-redis-proxy support use camellia-hot-key,thanks@21want28k provide this function
- CamelliaHotKeyCacheSdk add some new api, thanks@21want28k provide this function
- camellia-hot-key set ConcurrentLinkedQueue as default work queue, improve performance
- camellia-hot-key remove the expire policy of HotKeyCounterManager Caffeine, avoid performance degradation
- camellia-hot-key-server support setting Caffeine instance count of every namespace, it will improve performance in some case
- camellia-hot-key-server fix
unknown seqId
problem - CamelliaHotKeyCacheSdk fix namespace wrong,thanks@21want28k find this bug
- camellia-redis-proxy-discovery-zk 1.2.8/1.2.9 has compatibility issue with 1.2.7 or earlier, 1.2.10 fix this compatibility issue
- camellia-redis-proxy support print resource/command/keys in log when upstream redis failed
- camellia-redis-proxy、camellia-delay-queue-server、camellia-id-gen-server add online/offline callback
- ZkProxyRegistry/ZkHotKeyServerRegistry register online/offline callback
- CamelliaHashedExecutor add hashIndex method to get thread index by hashKey
- CamelliaHotKeyCacheSdkConfig remove namespace field, CamelliaHotKeyCacheSdk should use namespace from method
- camellia-hot-key-server grace online/offline should check traffic
- CamelliaHotKeyCacheSdk fix keyDelete/keyUpdate do not notify other sdk
- TopNCounter should clear buffer after collect
- TopNCounter fix calculate maxQps not exact issue
- add camellia-hot-key module
- add camellia-zk module, camellia-redis-proxy-zk and camellia-hot-key-zk base on camellia-zk
- camellia-redis-proxy set
tcp_keepalive
default true for client connect - camellia-config, update config namespace info field from varchar to text
- camellia-redis-proxy update the console api
/prometheus
, replace%n
to\n
, adapate windows os - camellia-redis-proxy when client connection in subscribe mode, if upstream redis down or proxy-redis connection disconnect for other reason, proxy should close client-proxy connection in same time
- camellia-redis-proxy fix client connection in subscribe mode, if client send ping、sub/unsub in frequency, client connection will broken
- camellia-redis-proxy force disconnect client connection with subscribe fail for upstream redis not available
- none
- none
- fix lock instance leak in concurrent case of CamelliaRedisLockManager
- fix schedule task leak in some case of RedisConnection when camellia-redis-proxy proxy pass TRANSACTION/PUB-SUB/BLOCKING commands
- camellia-redis-proxy support custom-write for TRANSACTION commands
- camellia-tools provide CamelliaScheduleExecutor
- RateLimitProxyPlugin support setting default config in tenant level
- camellia-redis-proxy support recycler CommandPack instance, optimize gc
- camellia-config add trim logic for key
- camellia-config optimize the response of
/getConfigString
- CamelliaLoadingCache add max load time control on cache penetration case
- camellia-redis-proxy specify ErrorReply msg of proxy upstream error
- camellia-redis-proxy run in redis-cluster mode, the line break in reply of
cluster nodes
commands should use\n
rather than\r\n
- CamelliaRedisLockManager use CamelliaScheduleExecutor instead of ScheduledExecutorService
- camellia-redis-proxy RedisConnection use CamelliaScheduleExecutor instead of ScheduledExecutorService to invoke idle-check and heartbeat
- camellia-redis-proxy optimize the heartbeat logic in redis-cluster mode
- camellia-config fix sql error
- camellia-redis-proxy when client connection in TRANSACTION or SUBSCRIBE status,
ping
command should pass through - camellia-redis-proxy fix command no reply when client connection change status between SUBSCRIBE and normal
- camellia-redis-proxy fix command no reply when client connection change status between SUBSCRIBE to normal, and send blocking command
- camellia-redis-proxy fix the TRANSACTION command logic error when route to redis-cluster, only occurs bug when in key's slot is 0
- none
- camellia-redis-proxy memory queue support use jctools high performance queue
- camellia-redis-proxy run in redis-cluster mode, optimize the MOVED logic
- camellia-redis-proxy optimize the renew logic when proxy to redis-cluster, may renew timely(bug from 1.2.0), thanks @saitama-24 find this problem
- add camellia-config module, a simple k-v config center
- camellia-redis-proxy provide NacosProxyDynamicConfLoader, a new method to use nacos
- camellia-redis-proxy BuildInProxyPlugins support setting custom order
- camellia-redis-proxy optimize RedisConnection
- camellia-redis-proxy support use camellia-config
- camellia-feign support use camellia-config
- camellia-redis-proxy support stats upstream fails when use PUBSUB commands
- camellia-redis-proxy-hbase memory queue support dynamic capacity
- camellia-delay-queue-server scheduler add concurrent control
- optimize IPMatcher, so it can calculate
10.22.23.1/24
correct
- fix camellia-redis-proxy use custom proxy route conf, fix no-effective of automatically eliminate faulty nodes when use multi read mode
- fix camellia-redis-proxy both use converterPlugin's key converter and hotKeyCachePlugin, the hot key cache not-effective
- camellia-redis-proxy support monitor upstream fail
- camellia-redis-proxy specify ErrorReply msg of proxy upstream error
- camellia-redis-proxy update some metrics type of /prometheus
- camellia-redis-proxy optimize status of RedisConnection
- fix camellia-redis-proxy use info upstream-info command to get upstream route conf do not mask redis password
- none
- refactor ProxyDynamicConf, support custom Loader
- fix RedisConnection heartbeat error do not close connection(bug from v1.2.0)
- redis-resource of redis-proxies and redis-proxies-discovery support setting db, both camellia-redis-proxy and CamelliaRedisTemplate
- camellia-redis-proxy support select command, only when upstream is redis-standalone/redis-sentinel/redis-proxies or their compose of sharding/read-write-separate, you can select no-zero db. if upstream contains redis-cluster resource, only support select 0
- CamelliaRedisTemplate support RedisProxiesDiscoveryResource
- camellia-redis-proxy-hbase support setting upstream.redis.hbase.command.execute.concurrent.enable(default false), it will improve the performance of pipeline commands, you can enable it only when the client is blocking, such as jedis
- rename DefaultTenancyNamespaceKeyConverter -> DefaultMultiTenantNamespaceKeyConverter
- fix the dependency problem of jar when use jedis3+SpringRedisTemplate+zk/eureka to access redis-proxy by discovery mode(root case: compile by jedis2.x, occur class not found error)
- fix bid/bgroup params not available when use CamelliaRedisProxyZkFactory+CamelliaRedisTemplate to access camellia-redis-proxy
- this pipeline method in CamelliaRedisTemplate should be read method: Response zcard(String key)
- add camellia-redis3 module, support jedis3.x(default use v3.6.3)
- add camellia-redis-base, the common of camellia-redis-client and camellia-redis-proxy
- camellia-redis-proxy support custom upstream, core interface is IUpstreamClientTemplate and IUpstreamClientTemplateFactory
- refactor camellia-redis-proxy-hbase, replace custom CommandInvoker into custom upstream, more code reuse, refactor thread module, use business thread to isolation netty worker thread and business thread
- camellia-tools provide CamelliaLinearInitializationExecutor to resource liner initialization
- camellia-redis-proxy refactor multi tenant init by CamelliaLinearInitializationExecutor
- camellia-redis-proxy support check upstream healthy in multi-read mode
- camellia-redis-proxy support init upstream RedisConnection in async mode
- camellia-redis-proxy support monitor qps every seconds
- camellia-redis-proxy add schedule renew when upstream is redis-cluster, default 600s
- camellia-hbase support setting userName、password、tag of aliyun-lindorm in url
- camellia-redis-proxy optimize the failover logic of redis-cluster-slaves and redis-sentinel-slaves
- camellia-redis-proxy optimize the failover logic of redis-proxies and redis-proxies-discovery
- camellia-redis-proxy support configure dynamic.conf.file.name in application.yml to replace camellia-redis-proxy.properties
- camellia-redis-proxy rename core upstream service
- camellia-redis remove the adaptor of CamelliaRedisTemplate to SpringRedisTemplate
- camellia-redis remove the adaptor of CamelliaRedisTemplate to Jedis
- add camellia-redis-toolkit module, independent the toolkits (such as CamelliaRedisLock) from camellia-redis, so the code could reuse by camellia-redis3
- add camellia banner in log file when use package to startup(redis-proxy、delay-queue、id-gen-server)
- fix camellia-redis-proxy use ProxyDynamicConf#reload(Map) direct setting custom k-v config, and config will be cleared in schedule task(bug from v1.1.8)
- camellia-redis-proxy support use transport_native_epoll、transport_native_kqueue、transport_native_io_uring, default use jdk_nio
- camellia-redis-proxy support configure TCP_QUICKACK option, only support in transport_native_epoll mode, thanks @tain198127 , related issue: issue-87
- RedisProxyJedisPool provide AffinityProxySelector, support configure affinity of proxy, thanks @tain198127 provide this feature
- id-gen-sdk use shared schedule thread pool default, decrease the thread num when init multi sdk instance
- delay-queue-sdk use shared schedule thread pool default, decrease the thread num when init multi sdk instance
- RedisProxyJedisPool use shared schedule thread pool default, decrease the thread num when init multi instance
- id-gen-server add bootstrap module, provide *.tar.gz to run directly
- delay-queue-server add bootstrap module, provide *.tar.gz to run directly
- fix CamelliaStatistics calc avg error when count=0
- none
- rollback the performance improve for BulkReply by direct buf (from 1.1.8), the reason is memory leak in some cases, such as: client connection disconnect before Reply write, the BulkReply will not release
- camellia-redis-proxy fix memory leak when client connection disconnect before Reply write, the BulkReply will not release(bug from v1.1.8)
- camellia-redis-proxy support prometheus/grafana, thanks @tasszz2k
- camellia-tools provide CamelliaDynamicExecutor and CamelliaDynamicIsolationExecutor, provide CamelliaExecutorMonitor to monitor thread-pool
- some utils from camellia-core package, move to camellia-tools package
- camellia-redis-proxy optimize the DefaultTenancyNamespaceKeyConverter when redis-key contains hashtag, thanks @phuc1998 and @tasszz2k
- fix camellia-redis-proxy upstream redis connection leak when use TRANSACTION commands in high qps, thanks @phuc1998 and @tasszz2k find this bug
- fix camellia-redis-proxy a concurrent issue of reply decode when use PUBSUB commands(bug from v1.1.8)
- camellia-redis-proxy provide DynamicRateLimitProxyPlugin, which support dynamic configure by camellia-dashboard, thanks @tasszz2k
- refactor project maven module
- rename camellia-redis-proxy artifactId to camellia-redis-proxy-core, camellia-redis-proxy transform to a directory
- fix CamelliaRedisTemplate select db when use RedisResource
- fix Chinese disorderly code of camellia-delay-queue, thanks @ax3353
- provide camellia-cache module, enhance spring-cache
- camellia-redis-proxy support LMPOP、BLMPOP command(redis7.0)
- optimize camellia-id-gen-sdk, any error from id-gen-server should trigger retry and node-ban, not only network error
- getMsg api of camellia-delay-queue, when msg is ack, getMsg return 200, but msg not return
- camellia-redis-proxy support configure custom k-v config(ProxyDynamicConf.java) by application.yml, priority is lower than camellia-redis-proxy.properties
- camellia-redis-proxy provider DefaultTenancyNamespaceKeyConverter, you can isolate the key(different key prefix) in different tenancy(bid/bgroup)
- camellia-redis-proxy support ZMPOP、BZMPOP command(redis7.0)
- camellia-redis-proxy-samples remove zk/nacos dependency, if need, add related dependencies by self
- camellia-redis-proxy update SCAN command without MATCH args when use ConverterProxyPlugin and KeyConverter
- camellia-redis-proxy performance improved for BulkReply encode/decode by direct buf
- camellia-redis-proxy Support connect limit for each tenant(bid, bgroup) by only 1 global configuration, thanks @tasszz2k
- fix camellia-delay-queue use long-polling mode, do not hold http request after run for a period of time
- fix camellia-redis-proxy do not handler the key in reply of EXBZPOPMAX/EXBZPOPMIN commands when use ConverterProxyPlugin
- camellia-redis-proxy support ZINTERCARD command
- camellia-redis-proxy support TairZSet、TairHash、TairString commands
- camellia-redis-proxy support RedisJSON commands
- camellia-redis-proxy support RedisSearch commands
- camellia-redis-proxy support select db when upstream is redis-standalone or redis-sentinel
- CamelliaRedisTemplate support select db when upstream is redis-standalone or redis-sentinel
- modify the error code of camellia-dashboard api for ip-permission, thanks @tasszz2k
- none
- none
- camellia-redis-proxy optimize monitor function on memory/gc
- none
- CamelliaStatistic support quantile stats, like p50/p75/p90/p90/p95/p99/p999
- camellia-redis-proxy rt monitor support quantile stats, like p50/p75/p90/p90/p95/p99/p999
- provide FileBasedCamelliaApi, support use local properties file to simulate camellia-dashboard
- camellia-feign support use local properties file to provide dynamic option, such as timeout\circuit\route
- camellia-core multi-write/sharding thread pool executor support setting RejectedExecutionHandler
- during camellia-feign initialization, if upstream services down, logging warn log instead of throw exception
- when use camellia-dashboard manage camellia-feign dynamic resource-table, if remote return 404, use local resource-table rather than throw exception
- when camellia-feign setting multi-write thread pool executor's RejectedExecutionHandler into Abort, the reject task will call CamelliaFeignFailureListener
- none
- camellia-dashboard support custom header, thanks @tasszz2k provide this function
- camellia-redis-proxy support PUB-SUB commands when configure multi-write route conf
- provide CamelliaMergeTask and CamelliaMergeTaskExecutor
- camellia-redis-proxy refactor and optimize ReplyDecoder to improve performance
- fix camellia-delay-queue thread leak when use long-polling
- CamelliaRedisTemplate support RedisProxiesResource
- camellia-redis-proxy provide CommandDisableProxyPlugin, you can configure in the camellia-redis-proxy.properties to disable some commands
- camellia-delay-queue, deleteMsg api support release redis memory right now(default false)
- optimize camellia-redis-proxy renew logic when upstream is redis-cluster
- camellia-delay-queue, when delay msg has delete or consumer, same msgId msg send will duplicate ignore
- fix redis-benchmark do not work when proxy start with password(from v1.1.0), root case: error handler when auth and other commands submit in pipeline
- CamelliaRedisProxyStarter support start console-server
- RedisProxyRedisConnectionFactory implements DisposableBean, support destroy method
- camellia-redis-proxy support cluster-mode, so proxy-cluster will be regarded as redis-cluster
- camellia-id-gen-sdk provide DelayQueueServerDiscoveryFactory to manager multi delay-queue-server clusters base on discovery
- camellia-redis-proxy support COMMAND command, transpond to upstream redis
- custom monitor callback running in isolation thread pool
- camellia-redis-proxy random port mode do not check available
- fix SpringProxyBeanFactory not available in camellia-redis-proxy
- camellia-redis-proxy support TRANSACTION commands(MULTI/EXEC/DISCARD/WATCH/UNWATCH) when route to redis-cluster
- optimize code of AsyncCamelliaRedisTemplate and AsyncCamelliaRedisClusterClient
- modify HotKeyProxyPlugin request order greater than HotKeyCacheProxyPlugin
- none
- refactor camellia-redis-proxy plugins and monitor
- none
- none
- camellia-delay-queue support long-polling to consume msg
- provide camellia-console module, so you can manager multi camellia-dashboard clusters
- provide CamelliaStatisticsManager to manage multi CamelliaStatistics instances
- optimize camellia-redis-proxy's AsyncCamelliaRedisTemplate init logic
- fix camellia-redis-proxy invoke ZINTERSTORE/ZUNIONSTORE/ZDIFFSTORE command error when route to redis-cluster or sharding-redis
- fix camellia-feign memory leak in DiscoveryResourcePool init fail case
- add camellia-delay-queue module
- camellia-feign support failureListener, include CamelliaNakedClient and CamelliaFeignClient
- camellia-tools provide CamelliaStatistics for calculate sum/count/avg/max
- camellia-redis provide CamelliaFreq for freq, include standalone/cluster mode
- camellia-redis-proxy add valid check when dynamic route conf update
- camellia-redis-proxy add route, resource init in async mode, improve multi-tenant isolation
- CamelliaRedisTemplate add available check for redis-cluster init
- rename NacosProxyDamicConfSupport to NacosProxyDynamicConfSupport
- CamelliaRedisTemplate eval/evalsha with the specified timeout
- fix camellia-dashboard FeignChecker not effective
- fix SideCarFirstProxySelector of RedisProxyJedisPool offline proxy failure
- camellia-core/camellia-feign adjust thread mode, provide new MultiWriteType MISC_ASYNC_MULTI_THREAD
- camellia-redis-proxy support cache double-delete
- camellia-dashboard provide some new api
- CamelliaHashedExecutor support getCompletedTaskCount
- update ProxyConstants default conf, increment default sharding/multi-write threads pool size
- camellia-redis-proxy skip monitor upstream redis spend time for pub-sub commands and blocking commands
- bump fastjson from 1.2.76 to 1.2.83
- fix upstream redis spend time = 0 when upstream-redis has password
- camellia-redis-proxy detect api support key count and qps
- CamelliaIdGenSdkConfig support setting OkHttpClient keepAliveSeconds, default 30s
- none
- none
- none
- fix CamelliaNakedClient multi-write
- camellia-redis-proxy support transpond to other proxy, such as codis、twemproxy, and support use discovery mode to find proxy
- camellia-core support async write, base on thread pool and memory queue
- camellia-feign provide CamelliaNakedClient
- camellia-redis-proxy support BloomFilter commands
- camellia-redis-proxy provide IPCheckerCommandInterceptor
- DynamicValueGetter move from package camellia-core to camellia-tools包
- none
- none
- none
- fix camellia-feign circuit breaker exception checker
- provide CamelliaCircuitBreaker
- camellia-feign support circuit breaker, support spring-boot-starter, support dynamic option conf
- camellia-redis-proxy custom ProxyRouteConfUpdater support delete route conf
- none
- none
- camellia-redis-proxy console support /detect, so you can use camellia-redis-proxy as a monitor platform
- none
- fix camellia-redis-proxy's if command with upstream-info section(bug from v1.0.51)
- provide camellia-feign module, so feign support dynamic route, multi-write, dynamic timeout conf
- camellia-core provide CamelliaDiscovery/CamelliaDiscoveryFactory
- camellia-core provide ResourceTableUpdater/MultiResourceTableUpdater
- camellia-redis remove ProxyDiscovery, use IProxyDiscovery which implements CamelliaDiscovery
- camellia-id-gen remove AbstractIdGenServerDiscovery, use IdGenServerDiscovery which implements CamelliaDiscovery
- all modules upgrade to jdk8
- none
- none
- camellia-redis-proxy info command reply, replace \n to \r\n, so you can use redis-shake to migrate redis data
- after invoke deregister method of ZkProxyRegistry, if the tcp connect of zk reset, reconnect task will trigger camellia-redis-proxy register to zk again
- camellia-dashboard and camellia-redis-proxy print redis password in some case
- camellia-redis provide CamelliaRedisLockManager to manager redis-lock auto renew
- camellia-redis provide CamelliaRedisTemplateManager to manger multi-redis-template of different bid/bgroup
- camellia-tools prvodie CamelliaHashedExecutor to execute runnable/callable with same thread in same hashKey
- none
- fix camellia-dashboard deleteResourceTable api, should update ResourceInfo's tid ref
- camellia-redis-proxy support script load/flush/exists
- camellia-redis-proxy support eval_ro/evalsha_ro, need upstream redis7.0+
- camellia-redis-proxy upstream redis spend stats support mask password
- scan should be a read command in monitor data
- fix camellia-dashboard api getTableRefByBidGroup/deleteTableRef, param should bid not tid
- camellia-redis-proxy support scan command when use custom sharding
- CamelliaRedisTemplate provide getReadJedisList/getWriteJedisList method
- CamelliaRedisTemplate provide executeRead/executeWrite method
- none
- none
- CamelliaRedisTemplate provide getJedisList method
- none
- none
- provide CRC16HashTagShardingFunc/DefaultHashTagShardingFunc to support HashTag when use custom sharding route table
- rename shading to sharding
- none
- camellia-redis-proxy KafkaMqPackConsumer support batch/retry
- camellia-redis-proxy provide DynamicCommandInterceptorWrapper to combine multi CommandInterceptors
- camellia-redis-proxy support disable console
- camellia-redis-proxy support read from redis-cluster slave node
- camellia-redis-proxy support transpond to multi stateless redis proxies, such as codis-proxy/twemproxy
- camellia-id-gen modify default conf
- none
- camellia-redis-proxy provide KafkaMqPackProducerConsumer, so proxy can be producer/consumer at the same time
- camellia-redis-proxy provide monitor upstream redis spend time
- RedisProxyJedisPool support jedis3
- refactor project module structure, new module camellia-redis-proxy-plugins, rename/move camellia-redis-zk/camellia-redis-proxy-mq/camellia-redis-proxy-hbase into camellia-redis-proxy-plugins
- RedisProxyJedisPool rename package, move package to camellia-redis-proxy-discovery
- camellia-redis-proxy refactor reply of info gc command
- none
- camellia-id-gen of segment and strict mode provide update api to setting starting id
- camellia-id-gen of segment and strict mode support setting shifting region id
- camellia-id-gen of segment mode support id sync in multi regions
- camellia-id-gen provide api to decode regionId/workerId
- camellia-redis-proxy support multi-write based on mq(such as kafka)
- camellia-redis-proxy monitor data buffer with size limit
- camellia-redis-proxy close client connection if custom ClientAuthProvider throw exception
- fix camellia-id-gen-strict-spring-boot-starter config of cache-key-prefix not effective
- camellia-redis-proxy info command metrics of redis-cluster-safety redefine
- camellia-redis-proxy console api of monitor support setting json max size of slow-command/big-key
- none
- camellia-redis-proxy info command metrics of redis-cluster-safety redefine
- none
- none
- camellia-redis-proxy support info command by http-api
- camellia-redis-proxy support client connect of bid/bgroup in info command
- none
- none
- camellia-redis-proxy support setting max client connect limit, default no limit
- camellia-redis-proxy support setting idle client connect check and close, default disable
- camellia-redis-proxy provide RateLimitCommandInterceptor, both support proxy-level and bid-bgroup-level
- camellia-redis-proxy provide camellia-redis-proxy-nacos-spring-boot-starter
- rename package name of CommandInterceptor
- none
- add camellia-id-gen mode, support snowflake, support db-base id-gen(growth tread), support db/redis-base id-gen(strict growth)
- support setting custom callback by spring @Autowired
- remove camellia-redis-toolkit module, CamelliaCounterCache/CamelliaRedisLock merge to camellia-redis module
- rename package of camellia-tools module
- none
- camellia-redis-proxy support setting upstream redis auth with userName/password
- info command get upstream redis connect, will not return if connect is 0
- enhance ProxyDynamicConfHook, so you can intercept all dynamic conf of ProxyDynamicConf
- extend the boundary of password-mask in monitor-data/log
- refactor CommandDecoder
- fix monitor data not exact of upstream redis connect, no effect the core function
- add camellia-tools module, provide compress utils CamelliaCompressor, encrypt utils CamelliaEncryptor, local cache utils CamelliaLoadingCache
- provide samples for camellia-redis-proxy implements data-encryption/data-compress by use camellia-tools
- camellia-redis-proxy support custom ClientAuthProvider to route different bid/bgroup route conf by different password
- camellia-redis-proxy support setting random port/consolePort
- camellia-redis-proxy support key converter
- camellia-redis-proxy support RANDOMKEY command
- camellia-redis-proxy support HELLO command, do not support RESP3, but support setname and auth username password by HELLO command(if redis-client is Lettuce6.x, proxy should upgrade to this version)
- camellia-redis-proxy support scan command when route to redis-cluster
- camellia-redis-proxy info command reply add http_console_port field
- camellia-redis-proxy info command reply add redis_version field
- camellia-redis-proxy info command reply of Stats rename field, such as avg.commands.qps rename to avg_commands_qps
- camellia-redis-proxy info command reply of Stats qps field format to %.2f
- auth/client/quit commands migrate from ServerHandler to CommandsTransponder
- fix KeyParser of EVAL/EVALSHA/XINFO/XGROUP/ZINTERSTORE/ZUNIONSTORE/ZDIFFSTORE
- camellia-redis-proxy support convert value of string/hash/list/set/zset commands, you can use this feature to data-encryption/data-compress
- camellia-redis-proxy support GETEX/GETDEL/HRANDFIELD/ZRANDMEMBER commands
- camellia-redis-proxy's BigKeyHunter support check of GETEX/GETDEL, support check reply of GETSET
- none
- fix camellia-redis-proxy blocking commands not available(bug from v1.0.33)
- camellia-redis-proxy-hbase refactor string commands implements
- CamelliaRedisTemplate provide Jedis Adaptor to migrate from Jedis
- CamelliaRedisTemplate provide SpringRedisTemplate Adaptor
- camellia-redis-proxy provide util class CamelliaRedisProxyStarter to start proxy without spring-boot-starter
- camellia-redis-proxy remove jedis dependency
- none
- camellia-redis-proxy provide TroubleTrickKeysCommandInterceptor to avoid trouble-trick-keys attack upstream redis
- camellia-redis-proxy provide MultiWriteCommandInterceptor to setting custom multi-write-policy(such as some key need multi-write, others no need)
- camellia-redis-proxy support DUMP/RESTORE commands
- CamelliaRedisTemplate support DUMP/RESTORE commands
- none
- camellia-redis-proxy BITPOS should be READ command
- CamelliaRedisTemplate BITPOS should be READ command
- camellia-redis-proxy-hbase support string/hash commands to hot-cold separate store
- none
- none
- info commands support section param, support get upstream-info(such like memory/version/master-slave/slot)
- none
- fix after request subscribe/psubscribe and unsubscribe/punsubscribe, the bind pub-sub upstream redis-client do not release connection
- none
- support mask password when init and reload route conf
- fix NPE when open slow-command-monitor/big-key-monitor and use pub-sub commands
- when proxy route to redis-cluster, support subscribe/psubscribe multiple times, and support unsubscribe/punsubscribe
- none
- none
- fix occasional not_available when use blocking commands
- support info command to get server info
- support setting monitor-data-mask-password conf, you can mask password in log and monitor data
- none
- fix not_available when use pipeline submit batch blocking commands
- none
- none
- fix too many connections when use blocking commands frequency
- camellia-redis-proxy support setting port/applicationName instead of server.port/spring.application.name
- ProxyDynamicConf support setting k-v map instead of read from file
- rename LoggingHoyKeyMonitorCallback to LoggingHotKeyMonitorCallback
- camellia-redis-proxy delete transpond mode of Disruptor/LinkedBlockingQueue, only support direct transpond mode
- camellia-redis-proxy stats log rename logger, add prefix of camellia.redis.proxy., e.g LoggingMonitorCallback.java
- camellia-redis-proxy rename BigKeyMonitorCallback callback method, callbackUpstream/callbackDownstream rename to callbackRequest/callbackReply
- camellia-redis-proxy performance update
- none
- camellia-redis-proxy support close idle upstream redis connection, default setting true
- camellia-redis-proxy support monitor connect count of upstream redis
- none
- when camellia-redis-proxy proxy to redis-cluster, fix a deadlock bug in some extreme case
- camellia-redis-proxy support ProxyRouteConfUpdater, so you can use multi-route-conf exclude camellia-dashboard
- support a default implements of ProxyRouteConfUpdater, named DynamicConfProxyRouteConfUpdater, it uses DynamicConfProxy(camellia-redis-proxy.properties) to manager multi-route-conf
- camellia-redis-proxy support ProxyDynamicConfHook,so you can dynamic update conf by hook
- camellia-redis-proxy add dummy callback implements of monitor
- camellia-redis-proxy monitor add route metrics: request of upstream redis, current route-conf
- camellia-redis-proxy add spend stats metric of bid/bgroup
- none
- none
- none
- update netty version to 4.1.63
- fix jdk8 ConcurrentHashMap's computeIfAbsent performance bug,fix see: CamelliaMapUtils,bug see: https://bugs.openjdk.java.net/browse/JDK-8161372
- CamelliaRedisTemplate support read from slaves in redis-sentinel cluster(will automatic process node-down/master-switch/node-expansion)
- camellia-redis-proxy support read from slaves in redis-sentinel cluster(will automatic process node-down/master-switch/node-expansion)
- CamelliaRedisTemplate use camellia-redis-spring-boot-starter, support setting bid/bgroup when call camellia-redis-proxy
- camellia-redis-proxy do not start if preheat fail
- none
- camellia-redis-proxy support dynamic reload of redis address route conf when use local conf
- camellia-redis-proxy's ProxyDynamicConf(camellia-redis-proxy.properties) support use standalone absolute-path conf file to merge classpath:camellia-redis-proxy.properties
- camellia-redis-proxy support preheat(default true), if true, proxy will connect to upstream redis when proxy start, rather than connect to upstream redis until command from redis-cli arrive proxy
- camellia-redis-spring-boot-starter/camellia-hbase-spring-boot-starter support dynamic local json complex conf
- when camellia-redis-proxy close RT monitor by DynamicConf, slow-command-monitor will close either, same logic to yml
- camellia-spring-redis-{zk,eureka}-discovery-spring-boot-starter add open-off config, default open
- RedisProxyJedisPool add param of jedisPoolLazyInit to lazy init jedisPool of proxy, to reduce initial time of RedisProxyJedisPool, default open, default init 16 jedisPool of proxy first
- fix a bug of RedisProxyJedisPool may cause 'Could not get a resource from the pool', very low probability(from 1.0.14)
- fix conf not found error when camellia-redis-proxy build/run in fat-jar
- none
- refactor camellia-redis-proxy-hbase, inconsistent to the old version, see doc
- optimize camellia-redis-proxy when open command spend time monitor
- none
- none
- performance update of camellia-redis-proxy, see v1.0.19
- fix xinfo/xgroup in KeyParser/pipeline
- add console http api of /reload, so you can reload ProxyDynamicConf by 'curl http://127.0.0.1:16379/reload'
- support HSTRLEN/SMISMEMBER/LPOS/LMOVE/BLMOVE
- support ZMSCORE/ZDIFF/ZINTER/ZUNION/ZRANGESTORE/GEOSEARCH/GEOSEARCHSTORE
- open the dynamic conf function of ProxyDynamicConf, if you setting 'k=v' in file camellia-redis-proxy.properties, then you can call ProxyDynamicConf.getString("k") to get 'v'
- if proxy setting multi-write, then blocking command will return not support
- none
- camellia-redis-proxy support transaction command, only when proxy route to redis/redis-sentinel with no-sharding/no-read-write-separate
- support ZPOPMIN/ZPOPMAX/BZPOPMIN/BZPOPMAX
- none
- fix ReplyDecoder bug of camellia-redis-proxy,proxy will modify nil-MultiBulkReply to empty-MultiBulkReply, find this bug when realize transaction command's support
- fix NPE when ProxyDynamicConf init, this bug does not affect the use of ProxyDynamicConf, only print the error log once when proxy start
- some conf properties support dynamic reload
- camellia-redis-zk-registry support register hostname
- optimize lock of some concurrent initializer
- none
- none
- HotKeyMonitor json add fields times/avg/max
- LRUCounter update, use LongAdder instead of AtomicLong
- none
- none
- when RedisProxyJedisPool's RefreshThread refresh proxy set, event ProxySelector hold this proxy, RefreshThread still call add method, avoid some times' timeout of proxy cause proxy not load balance
- fix a bug of RedisProxyJedisPool, low probability, may cause error of 'Could not get a resource from the pool'(from v1.0.14)
- none
- IpSegmentRegionResolver allow null/empty config,so camellia-spring-redis-eureka-discovery-spring-boot-starter and camellia-spring-redis-zk-discovery-spring-boot-starter can ignore configure of regionResolveConf
- none
- RedisProxyJedisPool allow setting custom policy of proxy choose: IProxySelector. default use RandomProxySelector,if you enable side-car-first, then use SideCarFirstProxySelector
- if RedisProxyJedisPool use SideCarFirstProxySelector,proxy priority is: side-car-proxy -> same-region-proxy -> other-proxy, for setting a proxy belongs to which region, you need define RegionResolver(provider IpSegmentRegionResolver which divide region by ip-segment)
- provider LocalConfProxyDiscovery
- optimize the fast fail policy when redis-cluster nodes down in camellia-redis-proxy
- camellia-redis-proxy renew slot-node in async
- fix a bug when redis-cluster renew slot-node (from 1.0.9)
- camellia-redis-proxy support setting MonitorCallback
- camellia-redis-proxy support monitor slow command, support setting SlowCommandMonitorCallback
- camellia-redis-proxy support monitor hot key, support setting HotKeyMonitorCallback
- camellia-redis-proxy support hot key local cache(only support GET command), support setting HotKeyCacheStatsCallback
- camellia-redis-proxy support monitor big key, support setting BigKeyMonitorCallback
- camellia-redis-proxy support multi-read-resources while rw_separate(will random choose a redis to read)
- CamelliaRedisTemplate support get original Jedis
- RedisProxyJedisPool support side-car mode, if setting true, RedisProxyJedisPool will use side-car-proxy first
- camellia-redis-proxy console support http api(default http://127.0.0.1:16379/monitor) to get metrics(tps、rt、slow command、hot key、big key、hot key cache)
- provide camellia-spring-redis-zk-discovery-spring-boot-starter,so you can use proxy in discovery way easily when your client is SpringRedisTemplate
- update CommandInterceptor define
- fix NPE for mget when use custom sharding(from 1.0.10)
- fix bug of redis sentinel master switch in proxy
- camellia-redis-proxy support blocking commands, such as BLPOP/BRPOP/BRPOPLPUSH and so on
- camellia-redis-proxy support stream commands of redis5.0,include blocking XREAD/XREADGROUP
- camellia-redis-proxy support pub-sub commands
- camellia-redis-proxy support set calc commands, such as SINTER/SINTERSTORE/SUNION/SUNIONSTORE/SDIFF/SDIFFSTORE and so on
- camellia-redis-proxy support setting multi-write-mode, provider three options, see com.netease.nim.camellia.redis.proxy.conf.MultiWriteMode
- camellia-redis-proxy provider AbstractSimpleShardingFunc to easily define custom sharding func
- camellia-redis-proxy-hbase support standalone freq of hbase get hit of zmemeber
- camellia-redis-proxy-hbase add prevent when rebuild zset from hbase
- fix CamelliaHBaseTemplate multi-write bug of batch-delete
- camellia-redis-proxy-async support redis sentinel
- camellia-redis-proxy-async support monitor command spend time
- camellia-redis-proxy-async support custom CommandInterceptor
- add camellia-redis-zk,provider a default register/discovery implements for camellia-redis-proxy
- camellia-redis-proxy-hbase add standalone freq policy for hbase-get
- modify camellia-redis-proxy's netty default conf sendbuf/rcvbuf,only check channel.isActive() instead of channel.isWritable()
- remove camellia-redis-proxy-sync
- camellia-redis-proxy-async performance improve
- none
- camellia-redis-proxy-async support eval/evalsha command
- CamelliaRedisTemplate support eval/evalsha
- CamelliaRedisLock use lua script, more strict lock
- some camellia-redis-proxy optimize
- none
- camellia-redis-proxy-hbase add freq policy for hbase-get
- camellia-redis-proxy-hbase add batch restrict for hbase-get/hbase-put
- camellia-redis-proxy-hbase hbase-write support set ASYNC_WAL
- camellia-redis-proxy-hbase support null-cache for type command
- camellia-redis-proxy-hbase add degraded conf, add pure async mode(data may be inconsistency)
- optimize monitor(use LongAdder instead of AtomicLong)
- camellia-redis-proxy-hbase conf use HashMap instead of Properties(reduce lock competition)
- some camellia-redis-proxy optimize
- none
- camellia-redis-proxy-hbase support async write mode, default not enable
- optimize RedisProxyJedisPool, add auto-ban for bad proxy address
- camellia-hbase-spring-boot-starter open remote monitor
- fix camellia-redis-proxy-async commands' reply out-of-order in pipeline
- add camellia-redis-eureka-spring-boot-starter
- optimize CamelliaRedisLock
- optimize camellia-redis-proxy-hbase
- update camellia-redis-proxy-hbase monitor
- fix chinese garbled code in swagger-ui on camellia-dashboard
first deploy