Redis
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> Redis

Redis khác nhau giữa hai danh sách?

Không có lệnh tích hợp nào cho việc đó - các tùy chọn của bạn là kéo hai danh sách và thực hiện so sánh (đối với khác biệt) trong ứng dụng khách hoặc viết tập lệnh Lua được chạy với EVAL để thực hiện nó ở phía máy chủ. Đây là một ví dụ cho một tập lệnh như vậy:

--[[ 
LDIFF key [key ...]
Returns the elements in the first list key that are also present in all other
keys.
]]--

-- A utility function that converts an array to a table
local function a2t(a)
  local t = {}
  for i, v in ipairs(a) do
    t[v] = true
  end
  return t
end

-- A utility function that converts a table to an array
local function t2a(t)
  local a = {}
  for k, _ in pairs(t) do
    a[#a+1] = k
  end
  return a
end

-- main
local key = table.remove(KEYS,1)
local elems = a2t(redis.call('LRANGE', key, 0, -1))

-- iterate remaining keys
while #KEYS > 0 do
  key = table.remove(KEYS,1)
  local check = a2t(redis.call('LRANGE', key, 0, -1))
  -- check each element in the current key for existence in the first key
  for k, _ in pairs(elems) do
    if check[k] then
      elems[k] = nil
    end
  end
end

-- convert the table to an array and reply
return t2a(elems)

Chạy điều này với redis-cli trông như thế này:

$ redis-cli LPUSH key1 value1 value2 value3
(integer) 3
$ redis-cli LPUSH key2 value1 value3 value4
(integer) 3
$ redis-cli --eval ldiff.lua key1 key2
1) "value2"


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Redis on Azure Performance Benchmark - ScaleGrid cho Redis ™ so với Azure Cache

  2. Có tương tự MGET cho hàm băm Redis không?

  3. Redis Vs RabbitMQ với tư cách là hệ thống nhắn tin / môi giới dữ liệu giữa Logstash vàasticsearch

  4. Cần tây / Làm lại cùng một tác vụ được thực hiện song song nhiều lần

  5. Lưu trữ thuộc tính đối tượng trong redis