简单认识redis的五种数据结构(python3示例)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单认识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‘]












以上是关于简单认识redis的五种数据结构(python3示例)的主要内容,如果未能解决你的问题,请参考以下文章

Redis的五种数据结构及其底层实现原理

Redis入门到高可用—— Redis的五种数据结构的内部编码

redis的五种数据类型

redis的五种数据结构

Redis 值的五种数据类型练习

Redis的五种对象类型及其底层实现