Redis Memory Monitoring - Python Edition.
A few hours ago, Salvatore Sanfilippo (the lead developer of Redis), tweeted a little Ruby script to interactively estimate the memory usage of a running redis-server
instance:
require 'rubygems'
require 'redis'
def main(opts={})
r = Redis.new(opts)
um = 0
while true do
newum = r.info[:used_memory]
if newum != um && um != 0
diff = newum.to_i-um.to_i
puts "#{um} bytes (#{diff} difference)"
end
um = newum
sleep 1
end
end
main
I've been experimenting with a Python+Redis combination (with redis-py) for data analysis on a few side projects lately, and a simple script like this can come in handy when you want to make sure you're not doing something completely stupid with Redis that gobbles up all of the allocated memory. And yes, I've been guilty of doing that on a few occasions.
Converting the script from Ruby to Python (with some additional logic for command line option parsing) is very straightforward:
#!/usr/bin/env python
import redis
from optparse import OptionParser
from time import sleep
def options():
parser = OptionParser()
parser.add_option("--host", default="localhost")
parser.add_option("--port", type="int", default=6379)
return parser.parse_args()
if __name__ == '__main__':
(opts, args) = options()
r = redis.Redis(host=opts.host, port=opts.port)
um = 0
while True:
newum = r.info()['used_memory']
if newum != um and um != 0:
print('%d bytes (%d difference)') % (um, newum - um)
um = newum
sleep(1)