简单认识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‘]

原文地址:https://www.cnblogs.com/haoqirui/p/10306683.html

时间: 2024-10-11 11:15:27

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

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

Redis的五种数据结构的内部编码 原文地址:https://www.cnblogs.com/thiaoqueen/p/9054083.html

redis的五种数据结构

五种数据结构 1.string 2.hash(类似map) 3.list 4.set 5.有序set jedisClient.set("redis_test", "value"); String redisStr = jedisClient.get("redis_test"); jedisClient.hset("rule","name","chi.zhang04"); jedisCli

浅谈Redis五种数据结构的底层原理

概念 Redis作为一个开源的用C编写的非关系型数据库,基于优秀的CRUD效率,常用于软件系统的缓存,其本身提供了以下五种数据格式: string:字符串 list:列表 hash:散列表 set:无序集合 zset:有序集合 接下来我们就要针对这五种数据结构,来分析其底层的结构 这里选用的版本是redis-5.0.4,所以可能有很多地方和如今网络上的其他博文不太一致,不同的地方我会在文中指出 string 因为redis使用c语言开发,所以自然没有java和c++的那些字符串类库,在redis

Redis中的五种数据结构

Strings: Lists: Sets: Hashes: Zsets: Redis中的五种数据结构

Redis五种数据结构详解

总结了下Redis五种数据结构的特定,本文主要参考 <redis in action>. 字符串 首先,字符串类型是最基础的类型,在redis里面字符串可以存储3中类型的值,字节串.整数.浮点数.这里整数或者浮点数是可以执行自增或自减的. 字符串常用命令 列表 列表类似于数据结构的链表,可以给定int范围去显示这个列表中的数据.列表允许用户从序列的两端推入或者弹出元素,获取列表元素,以及执行各种常见的列表操作. 列表经常用来存储任务信息.最近浏览过的文章或者联系人信息等. 列表的一个主要优点在

Redis(一)、Redis五种数据结构

Redis五种数据结构如下: 对redis来说,所有的key(键)都是字符串. 1.String 字符串类型 是redis中最基本的数据类型,一个key对应一个value. String类型是二进制安全的,意思是 redis 的 string 可以包含任何数据.如数字,字符串,jpg图片或者序列化的对象. 使用:get . set . del . incr. decr 等 127.0.0.1:6379> set hello world OK 127.0.0.1:6379> get hello

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

目录(?)[-] Redis对象类型简介 Redis对象底层数据结构 字符串对象 列表对象 哈希对象 集合对象 有序集合对象 结尾 Redis对象类型简介 Redis是一种key/value型数据库,其中,每个key和value都是使用对象表示的.比如,我们执行以下代码: redis>SET message "hello redis" 其中的key是message,是一个包含了字符串"message"的对象.而value是一个包含了"hello re

轻松搞定高并发:详解Redis的五种数据类型及应用场景分析!

一.Redis基本概念介绍和特性 1.1 Redis基本概念介绍 1.Redis是远程的,有客户端和服务端,我们一般说的是服务端: 2.Redis是基于内存的,所以比基于硬盘的MySQL要快很多,但非常吃内存 3.Redis是非关系型数据库.本质上也是数据库,但MySQL关系型数据库存储时必须定义数据词典,而Redis则不需要. 1.2 Redis 和 Memcached比较 Redis数据类型都支持push/pop.add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的

Redis 中 5 种数据结构的使用场景介绍

这篇文章主要介绍了Redis中5种数据结构的使用场景介绍,本文对Redis中的5种数据类型String.Hash.List.Set.Sorted Set做了讲解,需要的朋友可以参考下 一.redis 数据结构使用场景 原来看过 redisbook 这本书,对 redis 的基本功能都已经熟悉了,从上周开始看 redis 的源码.目前目标是吃透 redis 的数据结构.我们都知道,在 redis 中一共有5种数据结构,那每种数据结构的使用场景都是什么呢? String——字符串 Hash——字典