Redis之字符串实战

简介

        字符串是Redis中最简单的数据结构,可以存储文字,也可以存储数字,还可以存储二进制数据。针对类型不同,我们可以把它划分为3大类,基于普通字符串的操作、数字以及二进制的操作。如下表常见命令

基本操作数字操作二进制操作
SET和GETINCRBY(增加)和DECRBY(减少)SETBIT(设置二进制的值)和GETBIT(获取二进制的值)
SETNX(仅在键key不存在)INCR(增一)和DECR(减一)BITCOUNT(计算值为1的二进制位的数量)
GETSET(设置新值并返回旧值)INCRBYFLOATBITOP(二进制位运算)
APPEND(追加)  
STRLEN(长度)  
GETRANGE(范围取值)和SETRANGE(范围设置)  
MGET、MSET、MSETNX(同时设置或获取多个字符串键的值)  

实战:

计数器的实现

作用:记录页面被访问的次数

调用的函数:incr、get

#!/usr/bin/env python
#-*- coding:utf8 -*-
import redis

class Counter:
    def __init__(self, key, client):
	self.key = key
	self.client = client
    def incr(self, n=1):
	counter = self.client.incr(self.key, n)
	return int(counter)
    def decr(self, n=1):
	counter = self.client.decr(self.key, n)
	return int(counter)
    def reset(self, n=0):
	counter = self.client.getset(self.key, n)
	if counter is None:
		counter = 0
	return int(counter)
    def get(self):
        counter = self.client.get(self.key)
        if counter is None:
            print "None"
        else:
            print counter
if __name__=='__main__':
    r=redis.Redis(host='127.0.0.1',port=6379)
    c=Counter('page-counter',r)
    c.incr()
    c.incr()
    #c.reset()
    c.get()

效果图:

 

在线人数统计

原理:用户ID和位索引之间进行关联

通常网站的每一个会员都有一个自己的数字id,如果id为N的用户在线,我们将索引为N的二进制位的值设置为1.

#!/usr/bin/env python
#-*- coding:utf8 -*-

import redis
class OnlineCount:
	def __init__(self, when, client):
		self.when = when
		self.client = client
	def include(self, user_id):
		return self.client.setbit(self.when, user_id, 1)
	def result(self):
		return self.client.bitcount(self.when)

if __name__=='__main__':
    r=redis.Redis(host='127.0.0.1',port=6379)
    count=OnlineCount('2019-06-27',r)
    count.include(4)
    count.include(6)
    count.include(10)
    print count.result()

方案评价:

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值