当前位置: 首页>>代码示例>>Python>>正文


Python StrictRedis.srandmember方法代码示例

本文整理汇总了Python中redis.StrictRedis.srandmember方法的典型用法代码示例。如果您正苦于以下问题:Python StrictRedis.srandmember方法的具体用法?Python StrictRedis.srandmember怎么用?Python StrictRedis.srandmember使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在redis.StrictRedis的用法示例。


在下文中一共展示了StrictRedis.srandmember方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: random_dril_tweet_from_redis

# 需要导入模块: from redis import StrictRedis [as 别名]
# 或者: from redis.StrictRedis import srandmember [as 别名]
def random_dril_tweet_from_redis():
    """
    to counter-act the terrible "ISIS", im starting my own group called
    "NICEis". what we do is give retweets & faves to the
    hopelessly decrepit
    """
    redis_client = StrictRedis(host='localhost', port=6379, db=0)
    tweet = redis_client.srandmember('tweets')
    tweet = tweet.decode('UTF-8')
    return tweet
开发者ID:EFulmer,项目名称:random-dril-tweet-py,代码行数:12,代码来源:random_dril_tweet.py

示例2: __init__

# 需要导入模块: from redis import StrictRedis [as 别名]
# 或者: from redis.StrictRedis import srandmember [as 别名]

#.........这里部分代码省略.........
            return []

        key = self.inc_coll_cache_fmt.format(name=coll.name)
        rv = self.rdb.hmget(key, *fields)
        # print('inc_coll_caches_get - ', rv)
        # print('inc_coll_caches_get After - ', [unpackb(r) for r in rv if r])
        return [unpackb(r) for r in rv if r]

    def inc_coll_caches_del(self, coll, *fields):
        key = self.inc_coll_cache_fmt.format(name=coll.name)
        return self.rdb.hdel(key, *fields)

    def uniq_count_coll_cache_set(self, coll, ts, tagging, values):
        """
        :param values: should be a iterable object contain members
        """
        values = {packb(v) for v in values}
        key_fmt = self.unique_count_coll_cache_fmt
        key = key_fmt.format(name=coll.name, tagging=tagging, ts=ts)
        return self.rdb.sadd(key, *values)

    def uniq_count_coll_cache_get(self, coll, tagging, timestamps, count_only=False):
        key_fmt = self.unique_count_coll_cache_fmt
        rv = []
        for ts in timestamps:
            key = key_fmt.format(name=coll.name, tagging=tagging, ts=ts)
            if count_only:
                count = self.rdb.scard(key)
                rv.append(count)
            else:
                members = self.rdb.smembers(key)
                rv.append({unpackb(m) for m in members})
        return rv

    def uniq_count_coll_cache_pop(self, coll, tagging, timestamps, number):
        """
        :note: Redis `SPOP key [count]` command, The count argument will be
               available in a later version and is not available
               in 2.6, 2.8, 3.0.
               Now use SRANDMEMBER and SREM commands to mimic the effect of
               SPOP count.
        """
        key_fmt = self.unique_count_coll_cache_fmt
        rv = []
        for ts in timestamps:
            key = key_fmt.format(name=coll.name, tagging=tagging, ts=ts)
            # :: srandmember + srem == spop(key, number)
            members = self.rdb.srandmember(key, number)
            self.rdb.srem(key, *members)
            rv.append({unpackb(m) for m in members})
        return rv

    def uniq_count_coll_cache_del(self, coll, tagging, timestamps):
        keys = self._gen_count_keys(coll.name, tagging,
                                    'unique_count', timestamps)
        return self.rdb.delete(*keys)

    def sorted_count_coll_cache_set(self, coll, ts, tagging, values):
        """
        :param values: should be a dict of <member: score> pair
        """
        key_fmt = self.sorted_count_coll_cache_fmt
        key = key_fmt.format(name=coll.name, tagging=tagging, ts=ts)
        add_val = []
        for member, score in values.items():
            add_val.append(score)
            add_val.append(packb(member))
        return self.rdb.zadd(key, *add_val)

    def sorted_count_coll_cache_get(self, coll, tagging, timestamps, topN=None):
        key_fmt = self.sorted_count_coll_cache_fmt
        rv = []
        for ts in timestamps:
            key = key_fmt.format(name=coll.name, tagging=tagging, ts=ts)
            if topN:
                elements = self.rdb.zrange(key, -topN, -1, withscores=True)
            else:
                elements = self.rdb.zrange(key, 0, -1, withscores=True)
            rv.append([(unpackb(member), score) for member, score in elements])
        # import pprint
        # pprint.pprint(rv)
        return rv

    def sorted_count_coll_cache_del(self, coll, tagging, timestamps):
        keys = self._gen_count_keys(coll.name, tagging,
                                    'sorted_count', timestamps)
        return self.rdb.delete(*keys)

    def _gen_count_keys(self, name, tagging, cachetype, timestamps):
        if cachetype == 'unique_count':
            key_fmt = self.unique_count_coll_cache_fmt
        elif cachetype == 'sorted_count':
            key_fmt = self.sorted_count_coll_cache_fmt

        keys = []
        for ts in timestamps:
            k = key_fmt.format(name=name, tagging=tagging, ts=ts)
            keys.append(k)

        return keys
开发者ID:JasonLai256,项目名称:plumbca,代码行数:104,代码来源:backend.py

示例3: RedisConnector

# 需要导入模块: from redis import StrictRedis [as 别名]
# 或者: from redis.StrictRedis import srandmember [as 别名]

#.........这里部分代码省略.........
				minval = '(%d' % val
				maxval = '+inf'

			elif expr.operator == expr.GE:
				minval = val
				maxval = '+inf'

			elif expr.operator == expr.LT:
				minval = '-inf'
				maxval = '(%d' % val

			elif expr.operator == expr.LE:
				minval = '-inf'
				maxval = val

			else:
				raise Exception('Unsupported operator type given')

			start = expr.offset
			num = expr.limit

			if num is None and start == 0:
				start = None

			ids = self.handler.zrangebyscore(
				key,
				minval,
				maxval,
				start=start,
				num=num,
			)

			return [expr.model_cls(model_id) for model_id in ids]

	def choice (self, field, model_cls, val, count=1):
		key = self.idx_key(model_cls.getprefix(), field.name, val)
		ids = self.handler.srandmember(key, count)

		return None if not len(ids) else \
			[model_cls(model_id) for model_id in ids]

	def _save_idx (self, field, model, pipe=None):
		""" Save given model.field index. """

		if isinstance(field, IndexField):
			idx_key = self.idx_key(model.getprefix(), field.name, model[field.name])

			if field.unique:
				ids = self.handler.smembers(idx_key)

				if len(ids):
					ids.discard(bytes(model._id, 'utf-8') if PY3K else model._id)

					if len(ids):
						raise Exception('Duplicate key error')

			self._del_idx(field, model, pipe)
			pipe.sadd(idx_key, model._id)

		elif isinstance(field, RangeIndexField):
			val = model[field.name]

			if field.unique:
				models = field == val

				if len(models) > 1 or len(models) == 1 and models[0] is not model:
					raise Exception('Duplicate key error')

			key = self.ridx_key(model.getprefix(), field.name)

			pipe.zadd(key, **{
				model._id: field.to_db(val)
			})

		else:
			raise Exception('Bad field type given')

	def _del_idx (self, field, model, pipe=None):
		""" Delete db index value of model.field. """

		if model._exists is False:
			return

		if isinstance(field, IndexField):
			idx_val = model.get(
				name=field.name,
				origin=True,
				lite=True,
			)

			if idx_val is not None:
				idx_key = self.idx_key(model.getprefix(), field.name, idx_val)
				pipe.srem(idx_key, model._id)

		elif isinstance(field, RangeIndexField):
			key = self.ridx_key(model.getprefix(), field.name)
			pipe.zrem(key, model._id)

		else:
			raise Exception('Bad field type given')
开发者ID:jg9lt,项目名称:redisca2,代码行数:104,代码来源:redis.py

示例4: _proxy

# 需要导入模块: from redis import StrictRedis [as 别名]
# 或者: from redis.StrictRedis import srandmember [as 别名]
    return 0


def _proxy():
    if not rs.scard(rs_lname_proxy):
        time.sleep(1)
        _proxy()
    proxy = rs.srandmember('PROXY')
    return proxy


class SlowDownloadException(Exception):
    pass


user_agent = lambda: rs.srandmember('USER_AGENT')

_headers = {
    'User-Agent': user_agent(),
    # 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
}


def _download(url, download_timeout=10):
    proxy = _proxy()
    _start = time.time()
    _auth = HTTPProxyAuth(username='dengta', password='sf123456')
    s = requests.session()
    req = s.get(url=url, timeout=3, stream=True, proxies={'http': proxy}, headers=_headers, auth=_auth)
    res = list()
    for chunk in req.iter_content(chunk_size=65535):
开发者ID:yangmingsong,项目名称:python,代码行数:33,代码来源:tmallShopInfo.py


注:本文中的redis.StrictRedis.srandmember方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。