rlm_redis module "patch"
    Alan DeKok 
    aland at deployingradius.com
       
    Thu Jan 13 10:30:41 CET 2011
    
    
  
Gabriel Blanchard wrote:
> Attached is two new modules. Apologies ahead of time for submitting this as a tgz.
> 
> rlm_redis allows you to connect and query a redis key-store database. Basically same idea as memcached except the keys don't expire if you allow them to.
  I like redis, but haven't had much time to play with it.  It looks
interested.
> http://redis.io/
> 
> rlm_redis requires a redis server instance and the hiredis libraries to be installed https://github.com/antirez/hiredis
> 
> Preferably redis should be running version 2.2 as it allows you to expire keys.
> 
> rlm_rediswho is a module that is similar to rlm_radwho, it obviously uses the rlm_redis module. What it does is that it basically "dumps" all the accounting data/sessions into this key store database. Once a user has so many sessions (defined by trim-count) rlm_radwho will start trimming out old data. If there is no update for said user for expiry-time, the redis server itself will expire the key.
  That looks very useful.
> I anticipate the rlm_redis module could be used for something else, since it is _considerably_ faster than any sql module (about 100,000 queries per second) . But I thought that this was perfect for a radwho module as it allows you to expire stale sessions automatically, therefore the db won't grow an insane amount.
  Exactly.  It will use a lot of memory, but for ~100K users, it
shouldn't use more than a 1G.  And memory is cheap these days.
> Obviously this is all work in progress, but it appears to run stable. It compiles clean on my Mac but may need some configure script magic to make it a little more portable.
  It looks good.  Some comments:
- please use "github" to fork the freeradius repository
- add the files to the v2.1.x branch:
  rlm_redis/Makefile.in, configure.in, rlm_redis.[ch]
  rlm_rediswho/Makefile.in, configure.in, rlm_rediswho.c
- send me a "pull" request, or just email me, and I can pull the changes
over.
- re-creating the "configure" script will be done for the next release
- I suggest reformatting the code to follow the rest of the FreeRADIUS
  programming conventions
- the rediswho_expand() function is horrible.  Instead, see the function
xlat_client() in src/main/mainconfig.c.  It's smaller, simpler, and more
 capable.
- some sample configuration / documentation would be good, but not
required. :)
- a Perl script to replace "radwho" would be spectacular.
  The redis DB looks to be very interesting.  A fast key-value store has
a lot of usefulness.
  Alan DeKok.
    
    
More information about the Freeradius-Devel
mailing list