zoukankan      html  css  js  c++  java
  • Redis string

    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,值只能是 10
      
      # 注:如果在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
  • 相关阅读:
    RabbitMQ(四)
    RabbitMQ(三)
    RabbitMQ(二)
    定位
    响应式布局
    学习前端的一些心得
    css样式大全
    常用标签
    HTML
    app 被拒绝原因
  • 原文地址:https://www.cnblogs.com/xiangsikai/p/8309979.html
Copyright © 2011-2022 走看看