Module: Gitlab::Redis::ClusterUtil
- Defined in:
- lib/gitlab/redis/cluster_util.rb
Class Method Summary collapse
- .batch_unlink(keys, redis) ⇒ Object
-
.cluster?(obj) ⇒ Boolean
clusters? is used to select Redis command types, on ‘true`, the subsequent commands should be compatible with Redis Cluster.
Class Method Details
.batch_unlink(keys, redis) ⇒ Object
20 21 22 23 24 25 26 27 28 |
# File 'lib/gitlab/redis/cluster_util.rb', line 20 def batch_unlink(keys, redis) expired_count = 0 keys.each_slice(1000) do |subset| expired_count += Gitlab::Redis::CrossSlot::Pipeline.new(redis).pipelined do |pipeline| subset.each { |key| pipeline.unlink(key) } end.sum end expired_count end |
.cluster?(obj) ⇒ Boolean
clusters? is used to select Redis command types, on ‘true`, the subsequent commands should be compatible with Redis Cluster.
When working with MultiStore, if even 1 of 2 stores is a Redis::Cluster, we should err on the side of caution and return ‘true `,
12 13 14 15 16 17 18 |
# File 'lib/gitlab/redis/cluster_util.rb', line 12 def cluster?(obj) if obj.is_a?(MultiStore) cluster?(obj.primary_store) || cluster?(obj.secondary_store) else obj.respond_to?(:_client) && obj._client.is_a?(::Redis::Cluster) end end |