zoukankan      html  css  js  c++  java
  • 简单认识redis的五种数据结构(python3示例)

    1.Redis中的字符串

    存储方式:可以是字符串,整数或者浮点数
    操作方式:对整数和浮点数执行自增或者自减;对整个或者一部分字符串操作。
    基本方法:(不同的实现语法会有细节上的不同)


    GET:根据键获取值
    SET:设置键值
    DEL:删除键值

      1: import redis
    
      2: conn = redis.Redis()
    
      3: conn.set('greet','hello world')
    
      4: print(conn.get("greet"))
    
      5: conn.delete('greet')
    
      6: print(conn.get('greet'))

    结果

      1: b'hello world'
    
      2: None

    2.链表

    存储方式:一个链表,链表上的每个节点都包含了一个字符串

    操作方式:从链表的两端推入或者弹出元素;根据偏移量对链表进行修改;读取单个或者多个元素;根据值查找或者移除元素

    基本方法:

    RPUSH:将定值推入列表的右端

    LRANGE:获取列表在给定范围上的所有值

    LINDEX:获取列表在给定位置上的单个元素

    LPOP:从列表的左端弹出一个值,并返回被弹出的值。

      1: import redis
    
      2: conn = redis.Redis()
    
      3: for i in range(5):
    
      4:     conn.rpush("list1", "hi alex%s!" %i)
    
      5: # 语法与python的切片一样
    
      6: print(conn.lrange("list1", 0, -1))
    
      7: print(conn.lindex("list1", 4))
    
      8: print(conn.lpop("list1"))
    
      9: print(conn.rpop("list1"))

    结果

      1: [b'hi alex0!', b'hi alex1!', b'hi alex2!', b'hi alex3!', b'hi alex4!']
    
      2: b'hi alex4!'
    
      3: b'hi alex0!'
    
      4: b'hi alex4!'

    3.集合

    无序的,并且数据是各不相同。


    SADD 将给定元素添加到集合
    SMEMBERS 返回集合包含的所有元素
    SISMEMBER 检查给定元素是否存在于集合中
    SREM 如果给定的元素存在于集合中,那么移除这个元素

      1: import redis
    
      2: conn = redis.Redis()
    
      3: conn.sadd("set1", "alex", "egon", "axe")
    
      4: print(conn.smembers("set1"))
    
      5: print(conn.sismember("set1", "axe"))
    
      6: print(conn.srem("set1", "alex"))
    
      7: print(conn.smembers("set1"))

    结果

      1: {b'axe', b'egon', b'alex'}
    
      2: True
    
      3: 1
    
      4: {b'axe', b'egon'}

    4.散列

    储存多个键值对的无序散列表

    HSET 在散列值里面关联起给定的键值对

    HGET 获取指定散列值的键

    HGETALL 获取散列包含的所有键值对

    HDEL 如果给定键存在于散列里面,那么移除这个键

      1: import redis
    
      2: conn = redis.Redis()
    
      3: conn.hset("hash1", "key1", "value1")
    
      4: conn.hset("hash1", "key2", "value2")
    
      5: print(conn.hget("hash1", "key1"))
    
      6: print(conn.hgetall("hash1"))
    
      7: print(conn.hdel("hash1", "key1"))
    
      8: print(conn.hgetall("hash1"))

    结果

      1: b'value1'
    
      2: {b'key2': b'value2', b'key1': b'value1'}
    
      3: 1
    
      4: {b'key2': b'value2'}

    5.有序集合

    结构为:成员-分值(必须为浮点数)的有序映射,排序由分值大小来决定。

    ZADD 将一个带有给定分值的成员添加到有序集合里面
    ZRANGE 根据元素在有序排列中所处的位置,从有序集合里获取多个元素
    ZRANGEBYSCORE 获取有序集合在给定分值范围内的所有元素
    ZREM 如果给定成员存在于有序集合,那么移除这个成员

      1: import redis
    
      2: conn = redis.Redis()
    
      3: print(conn.zadd("ordset1", dict([("member1",73.8),("member2",83.8),("member3",93.8),("member4",103.8)])))
    
      4: print(conn.zrange("ordset1", 0, 1))
    
      5: print(conn.zrangebyscore("ordset1", 73.8, 93.8))
    
      6: print(conn.zrem("ordset1", "member1"))
    
      7: print(conn.zrange("ordset1", 0, -1))

    结果

      1: 4
    
      2: [b'member1', b'member2']
    
      3: [b'member1', b'member2', b'member3']
    
      4: 1
    
      5: [b'member2', b'member3', b'member4']
  • 相关阅读:
    第二次结对编程总结
    结对编程作业博客
    现状、经验和计划
    个人总结
    6月中旬开发心得
    读《软件开发沉思录》
    团队进度汇报
    个人课程总结
    Beta阶段总结
    冲刺第十天 1.11 FRI
  • 原文地址:https://www.cnblogs.com/haoqirui/p/10306683.html
Copyright © 2011-2022 走看看