zoukankan      html  css  js  c++  java
  • Redis string

    Redis 优点

      是单线程的,读写速度非常快,效率很高,每秒可以执行大约110000设置操作,81000个/每秒的读取操作。

      支持丰富的数据类型 : Redis支持最大多数开发人员已经知道如列表,集合,可排序集合,哈希等数据类型。

      操作都是原子的 : 所有 Redis 的操作都是原子,从而确保当两个客户同时访问 Redis 服务器得到的是更新后的值(最新值)。

      MultiUtility工具:Redis是一个多功能实用工具,可以在很多如:缓存,消息传递队列中使用(Redis原生支持发布/订阅),在应用程序中,如:Web应用程序会话,网站页面点击数等任何短暂的数据;

      

      Redis 需要安装。

    PYTHON链接方式

      一种

      import redis

       
      r = redis.Redis(host='localhost', port=6379)
      r.set('foo''Bar')
      print r.get('foo')
     
      连接池
     
      import redis
     
      pool = redis.ConnectionPool(host="localhost",port=6379)
     
      r = redis.Redis(connection_pool=pool)
      r.set('foo','bar')
      print(r.get('foo'))  #打印出来的是bytes类型,因为在python3中,通过socket的都是bytes类型
      

    python 操作

    1,set(name, value, ex=None, px=None, nx=False, xx=False)

    Redis中设置值,默认,不存在则创建,存在则修改

    参数:
         ex,过期时间(秒)
         px,过期时间(毫秒)
         nx,如果设置为True,则只有name不存在时,当前set操作才执行
         xx,如果设置为True,则只有name存在时,当前set操作才执行

    2,setnx(name, value)

    设置值,只有name不存在时,执行设置操作(添加),相当于set name *** nx

    3,setex(name, value, time)   (秒)

    设置值

    # 参数:
        # time,过期时间(数字秒 或 timedelta对象)
    #相当于 set name **** ex 2

    4,psetex(name, time_ms, value)(毫秒)

    设置值

    # 参数:
        # time_ms,过期时间(数字毫秒 或 timedelta对象)
    #相当于 set name *** px 2
     
    5,mset(*args, **kwargs)
    批量设置值
    如:
        mset(k1='v1', k2='v2')
        
        mget({'k1''v1''k2''v2'})

    按顺序 排列前面键后面值,同过键去值。

    6、get(name)

      获取值。

    7,mget(keys, *args)

    批量获取

    如:
        mget('*****''****')
        
        r.mget(['****''****'])
     

    8,getset(name, value)

      设置新值并获取原来的值   修改后可以获取原来的值,可以保存下来。

    9、getrange(key, start, end)

    # 获取子序列(根据字节获取,非字符)    (相当于把字符串切片,用下标取值)

    # 参数:
        # name,Redis 的 name
        # start,起始位置(字节)
        # end,结束位置(字节)
    # 如: "张耀庆" ,0-3表示 "张"

    127.0.0.1:6379[1]> set name zhang

    OK
    127.0.0.1:6379[1]> getrange name 0 1 #获取0到1的字符串,这边相当于切片,但是是顾头又顾尾
    "zh"

    10、setrange(name, offset, value)

     修改字符串内容,从指定字符串索引开始向后替换(新值太长时,则向后添加)

    # 参数:
        # offset,字符串的索引,字节(一个汉字三个字节)
        # value,要设置的值

    127.0.0.1:6379[1]> get name

    "zhang"
    127.0.0.1:6379[1]> setrange name 3 m  #把字符串中的第3个字符替换成m
    (integer) 10
    127.0.0.1:6379[1]> get name
    "zhamg"
     
    (相当于字符串的替换,输入下标,写新值)

    11、setbit(name, offset, value)

    # 对name对应值的二进制表示的位进行操作

      
    # 参数:
        # name,redis的name
        # offset,位的索引(将值变换成二进制后再进行索引)
        # value,值只能是 1 或 0
      
    # 注:如果在Redis中有一个对应: n1 = "foo",
            那么字符串foo的二进制表示为:01100110 01101111 01101111
        所以,如果执行 setbit('n1'71),则就会将第7位设置为1
            那么最终二进制则变成 01100111 01101111 01101111,即:"goo"

    # 扩展,转换二进制表示:

      
        # source = "武沛齐"
        source = "foo"
      
        for 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
            -------------------------- ----------------------------- -----------------------------
                     第一个字         第二个                   第三个

     *用途举例,用最省空间的方式,存储在线用户数及分别是哪些用户在线

    12、getbit(name, offset)

    # 获取name对应的值的二进制表示中的某位的值 (0或1)

    13、bitcount(key, start=None, end=None)

    # 获取name对应的值的二进制表示中 1 的个数

    # 参数:
        # key,Redis的name
        # start,位起始位置
        # end,位结束位置

    14、strlen(name)

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

    15、incr(self, name, amount=1)

    # 自增 name对应的值,当name不存在时,则创建name=amount,否则,则自增。

      
    # 参数:
        # name,Redis的name
        # amount,自增数(必须是整数)
      
    # 注:同incrby

    *用途举例,这个一般用于计算用户的登录的总量的。

    16、incrbyfloat(self, name, amount=1.0)

    # 自增 name对应的值,当name不存在时,则创建name=amount,否则,则自增。

      
    # 参数:
        # name,Redis的name
        # amount,自增数(浮点型)

    17、decr(self, name, amount=1)

    自减 name对应的值,当name不存在时,则创建name=amount,否则,则自减。

      
    # 参数:
        # name,Redis的name
        # amount,自减数(整数)

     *用途举例,用于如果用户账户失效,则减去

    18、append(key, value)

    # 在redis name对应的值后面追加内容

      
    # 参数:
        key, redis的name
        value, 要追加的字符串
     

    19、help 变量名

    #查看操作的使用方法 

    help set  命令

    着学都是Redis的字符串用法

  • 相关阅读:
    生成唯一流水码
    搜索类
    数字转中文
    字符串转数组工具类
    类转换
    P1112 区间连续段
    P1113 同颜色询问
    Turtlebot3 机器学习
    Turtlebot2进阶教程
    turtlebot A2
  • 原文地址:https://www.cnblogs.com/littlesky1124/p/9088173.html
Copyright © 2011-2022 走看看