博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python Redis string
阅读量:4993 次
发布时间:2019-06-12

本文共 2622 字,大约阅读时间需要 8 分钟。

String操作,redis中的String在在内存中按照一个name对应一个value来存储。如图:

 

  • set(name, value, ex=None, px=None, nx=False, xx=False)
  • # 在Redis中设置值,默认,不存在则创建,存在则修改
  • 参数:     ex,过期时间(秒)     px,过期时间(毫秒)     nx,如果设置为True,则只有name不存在时,当前set操作才执行     xx,如果设置为True,则只有name存在时,岗前set操作才执行
    View Code

     

  • setnx(name, value)
  • # 设置值,只有name不存在时,执行设置操作(添加)

 

  • setex(name, value, time)
  • # 设置值
  • # 参数:# time,过期时间(数字秒 或 timedelta对象)
    View Code

     

  • psetex(name, time_ms, value)
  • # 设置值
  • # 参数:    # time_ms,过期时间(数字毫秒 或 timedelta对象)
    View Code

     

  • mset(*args, **kwargs)
  • # 批量设置值
  • 如:    mset(k1='v1', k2='v2')    或    mget({
    'k1': 'v1', 'k2': 'v2'})
    View Code

     

  • get(name)
  • # 获取值

 

  • mget(keys, *args)
  • # 批量获取
  • 如:    mget('ylr', 'wupeiqi')    或    r.mget(['ylr', 'wupeiqi'])
    View Code

     

  • getset(name, value)
  • # 设置新值并获取原来的值

 

  • getrange(key, start, end)
  • # 获取子序列(根据字节获取,非字符)
  • # 参数:    # name,Redis 的 name    # start,起始位置(字节)    # end,结束位置(字节)# 如: "武沛齐" ,0-3表示 "武"
    View Code

     

  • setrange(name, offset, value)
  • # 修改字符串内容,从指定字符串索引开始向后替换(新值太长时,则向后添加)
  • # 参数:    # offset,字符串的索引,字节(一个汉字三个字节)    # value,要设置的值
    View Code

     

  • setbit(name, offset, value)
  • # 对name对应值的二进制表示的位进行操作
  • #使用场景:高并发访问的用户统计#可以设置每一个用户为一个bit 10M存上亿用户##setbit n1 100用户  1    #添加100用户存1bit#getbit n1 100用户       #查询100用户是否存活# 参数:# name,redis的name# offset,位的索引(将值变换成二进制后再进行索引)# value,值只能是 1 或 0# 注:如果在Redis中有一个对应: n1 = "foo",        那么字符串foo的二进制表示为:01100110 01101111 01101111    所以,如果执行 setbit('n1', 7, 1),则就会将第7位设置为1,        那么最终二进制则变成 01100111 01101111 01101111,即:"goo"# 扩展,转换二进制表示:# source = "武沛齐" source = "foo" for i in source:    num = ord(i)    print bin(num).replace('b','')特别的,如果source是汉字 "武沛齐"怎么办?答:对于utf-8,每一个汉字占 3 个字节,那么 "武沛齐" 则有 9个字节。       对于汉字,for循环时候会按照 字节 迭代,那么在迭代时,将每一个字节转换 十进制数,然后再将十进制数转换成二进制。        11100110 10101101 10100110 11100110 10110010 10011011 11101001 10111101 10010000
    View Code
 
  • getbit(name, offset)
  • # 获取name对应的值的二进制表示中的某位的值 (0或1)

 

  • bitcount(key, start=None, end=None)
  • # 获取name对应的值的二进制表示中 1 的个数
  • # 参数:    # key,Redis的name    # start,位起始位置    # end,位结束位置
    View Code

     

  • bitop(operation, dest, *keys)
  • # 获取多个值,并将值做位运算,将最后的结果保存至新的name对应的值

 

  • strlen(name)
  • # 返回name对应值的字节长度(一个汉字3个字节)

 

  • incr(self, name, amount=1)
  • # 自增 name对应的值,当name不存在时,则创建name=amount,否则,则自增。
  • # 参数:    # name,Redis的name    # amount,自增数(必须是整数) # 注:同incrby
    View Code

     

  • incrbyfloat(self, name, amount=1.0)
  • # 自增 name对应的值,当name不存在时,则创建name=amount,否则,则自增。
  • # 参数:    # name,Redis的name    # amount,自增数(浮点型)
    View Code

 

  • decr(self, name, amount=1)
  • # 自减 name对应的值,当name不存在时,则创建name=amount,否则,则自减。
  • # 参数:    # name,Redis的name    # amount,自增数(浮点型)
    View Code

     

  • append(key, value)
  • # 在redis name对应的值后面追加内容
  • # 参数:    key, redis的name    value, 要追加的字符串
    View Code

     

转载于:https://www.cnblogs.com/xiangsikai/p/8309979.html

你可能感兴趣的文章
0 window DOS窗口常用指令
查看>>
c++11特性与cocos2d-x 3.0之std::bind与std::function
查看>>
ARC078 D.Fennec VS. Snuke(树上博弈)
查看>>
VIM学习笔记一
查看>>
面向对象第四单元总结
查看>>
同源策略,Jsonp实现跨域
查看>>
二叉搜索树的后序遍历序列
查看>>
纯C#的ini格式配置文件读写
查看>>
每日分享
查看>>
【干货】大数据框架整理
查看>>
年轻人,能用钱解决的,绝不要花时间(转)
查看>>
python2.7.X 升级至Python3.6.X
查看>>
VS调试方法
查看>>
jquery拖拽实现UI设计组件
查看>>
javamail模拟邮箱功能获取邮件内容-中级实战篇【内容|附件下载方法】(javamail API电子邮件实例)...
查看>>
白话排序算法--冒泡排序
查看>>
imx6 18bit display
查看>>
Spring静态属性注入
查看>>
实验10:指针2
查看>>
【转】hibernate缓存:一级缓存和二级缓存
查看>>