I gave a look directly in the redis shell

redis-cli -h localhost -p 6379 -a PASSWORD_IF_YOU_SET_ONE

It appears that each session store will have a different key which goes
like that : w2p:sess:APP_NAME:SOME_ID

And w2p:sess:APP_NAME:id_idx will contains a set of each unique session
existings, so you would have to access this list of session id then access
the actual session.

You can list keys in redis with :

SCAN 0

Better then KEYS that could cause lock and lot of memory usage

To list the set of existing sessions in ...:id_idx you need to use

smembers w2p:sess:APP_NAME:id_idx

It migth help you figure out how to manage you redis sessions form python
and better understand session contrib :
https://github.com/web2py/web2py/blob/0d646fa5e7c731cb5c392adf6a885351e77e4903/gluon/contrib/redis_session.py

Good luck

Richard



On Mon, Apr 9, 2018 at 12:11 AM, Lisandro <rostagnolisan...@gmail.com>
wrote:

> Recently I moved the sessions from the database to Redis, and I'm
> wondering: is there a way to retrieve info about sessions when they are
> stored in Redis?
> For example, when sessions are stored in the database, you have the option
> to use SQL to do some stuff like counting or deleting sessions. How to do
> it when sessions are stored in Redis?
>
> I also use Redis to cache HTML responses from web2py and any other stuff
> that can be cached (lists, dictionaries, etc). In order to be able to list
> the keys cached by one specific web2py application, I have written this
> custom function to retrieve those keys.
> I've read that it's not a good idea to use cache.redis.r_server.keys()
> method on production
> <https://stackoverflow.com/questions/23296681/redis-safely-retrieving-a-small-set-of-keys-in-production-database>,
> so I written this code based on what I saw in the clear() method at
> gluon.contrib.redis_cache
> <https://github.com/web2py/web2py/blob/master/gluon/contrib/redis_cache.py#L233>
> :
>
> def get_cache_keys(application, prefix=''):
>     import re
>     result = []
>     regex = ':%s*' % prefix
>     prefix = 'w2p:%s' % application
>     cache_set = 'w2p:%s:___cache_set' % application
>     r = re.compile(regex)
>     buckets = current.cache.redis.r_server.smembers(cache_set)  # get all
> buckets
>     if buckets:  # get all keys in buckets
>         keys = current.cache.redis.r_server.sunion(buckets)
>     else:
>         return result
>     for a in keys:
>         if r.match(str(a).replace(prefix, '', 1)):
>             result.append(a)
>     return result
>
>
> With that code, I'm able to list all the keys cached by a web2py
> application.
> As I'm also using Redis to store sessions, I want to be able to list all
> the session keys.
> I've tried a similar code to the one showed above, replacing this:
>
>     prefix = 'w2p:sess:%s' % application
>     cache_set = 'w2p:sess:%s:id_idx' % application
>
> But that doesn't work. Is it possible to achieve what I want? Any
> suggestion will be much appreciated.
>
> Regards,
> Lisandro.
>
> --
> Resources:
> - http://web2py.com
> - http://web2py.com/book (Documentation)
> - http://github.com/web2py/web2py (Source code)
> - https://code.google.com/p/web2py/issues/list (Report Issues)
> ---
> You received this message because you are subscribed to the Google Groups
> "web2py-users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to web2py+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to