开源软件名称(OpenSource Name):nrk/redis-lua开源软件地址(OpenSource Url):https://github.com/nrk/redis-lua开源编程语言(OpenSource Language):Lua 100.0%开源软件介绍(OpenSource Introduction):redis-luaAboutredis-lua is a pure Lua client library for the Redis advanced key-value database. Main features
CompatibilityThis library is tested and works with Lua 5.1, Lua 5.2 (using a compatible version of LuaSocket) and LuaJit 2.0. Examples of usageInclude redis-lua in your scriptJust require the local redis = require 'redis' Previous versions of the library defined a global Connect to a redis-server instance and send a PING commandlocal redis = require 'redis'
local client = redis.connect('127.0.0.1', 6379)
local response = client:ping() -- true It is also possible to connect to a local redis instance using UNIX domain sockets if LuaSocket has been compiled with them enabled (unfortunately it is not the default): local redis = require 'redis'
local client = redis.connect('unix:///tmp/redis.sock') Set keys and get their valuesclient:set('usr:nrk', 10)
client:set('usr:nobody', 5)
local value = client:get('usr:nrk') -- 10 Sort list values by using various parameters supported by the serverfor _,v in ipairs({ 10,3,2,6,1,4,23 }) do
client:rpush('usr:nrk:ids',v)
end
local sorted = client:sort('usr:nrk:ids', {
sort = 'asc', alpha = true, limit = { 1, 5 }
}) -- {1=10,2=2,3=23,4=3,5=4} Pipeline commandslocal replies = client:pipeline(function(p)
p:incrby('counter', 10)
p:incrby('counter', 30)
p:get('counter')
end) Variadic commandsSome commands such as RPUSH, SADD, SINTER and others have been improved in Redis 2.4
to accept a list of values or keys depending on the nature of the command. Sometimes
it can be useful to pass these arguments as a list in a table, but since redis-lua does
not currently do anything to handle such a case you can use local values = { 'value1', 'value2', 'value3' }
client:rpush('list', unpack(values))
-- the previous line has the same effect of the following one:
client:rpush('list', 'value1', 'value2', 'value3') Leverage Redis MULTI / EXEC transaction (Redis > 2.0)local replies = client:transaction(function(t)
t:incrby('counter', 10)
t:incrby('counter', 30)
t:get('counter')
end) Leverage WATCH / MULTI / EXEC for check-and-set (CAS) operations (Redis > 2.2)local options = { watch = "key_to_watch", cas = true, retry = 2 }
local replies = client:transaction(options, function(t)
local val = t:get("key_to_watch")
t:multi()
t:set("akey", val)
t:set("anotherkey", val)
end) Get useful information from the serverfor k,v in pairs(client:info()) do
print(k .. ' => ' .. tostring(v))
end
--[[
redis_git_dirty => 0
redis_git_sha1 => aaed0894
process_id => 23115
vm_enabled => 0
hash_max_zipmap_entries => 64
expired_keys => 9
changes_since_last_save => 2
role => master
last_save_time => 1283621624
used_memory => 537204
bgsave_in_progress => 0
redis_version => 2.0.0
multiplexing_api => epoll
total_connections_received => 314
db0 => {keys=3,expires=0}
pubsub_patterns => 0
used_memory_human => 524.61K
pubsub_channels => 0
uptime_in_seconds => 1033
connected_slaves => 0
connected_clients => 1
bgrewriteaof_in_progress => 0
blocked_clients => 0
arch_bits => 32
total_commands_processed => 3982
hash_max_zipmap_value => 512
db15 => {keys=1,expires=0}
uptime_in_days => 0
]] Dependencies
LinksProjectRelatedAuthorsContributorsLicenseThe code for redis-lua is distributed under the terms of the MIT/X11 license (see LICENSE). |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论