redis有5种数据结构,分别如下:

5种数据结构



python语言对5种数据结构的增删改查









全局函数

redis 连接

  1. import redis
  2. pool = redis.ConnectionPool(host='localhost', port=6379, decode_responses=True)
  3. r = redis.Redis(connection_pool=pool)

redis 取出的结果默认是字节,可以设定 decode_responses=True 改成字符串

redis python操作

一、字符串

创建

1.设置单个键值对

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

ex:过期时间(秒),时间到了后redis会自动删除

px:过期时间(毫秒),时间到了后redis会自动删除。ex、px二选一即可

nx:如果设置为True,则只有name不存在时,当前set操作才执行

xx:如果设置为True,则只有name存在时,当前set操作才执行

2.设置多个值

value_dict = {'num': 123, 'str': 456}

mset(value_dict)

3.不存在键更新value,存在则不变

setnx(name, value)

4.设置value,并添加有效期

setex(name, time, value)

r.setex('name', 1, 'James') 设置name=James,并且有效期为1s

修改

1.value后面追加

append(key, value)

查询

1.获取单个值,返回字符串

get(key)

2.获取多个值,返回列表

mget(['num', 'str'])

3.给已有的键设置新值,并返回原有的值。返回字符串

getset(name, value)

当所给的键不存在时,会设置新值,但返回值是None

4.获取value的长度,返回整型

strlen(key)

5.获取value从start到end的子字符串,返回字符串

getrange(key, start, end)

二、列表

redis中,一个键对应一个列表

增加:

1.在列表右边添加值。key不存在时创建一个新列表,返回列表的长度

redis.rpush(key, 1,2,3,4)

可以添加单个,可以添加多个。当有多个值时,将值依次添加到最右边

arr = [5,4,3,2,1]

r.rpush(key, *arr)

2.在列表左边添加,key不存在时创建一个新列表,返回列表的长度

r.lpush(key, 1,2,3,4)

当有多个值时,将值依次添加到最左边。

3.在列表中间插入新值

linsert(name, where, refvalue, value)

name:键名

where:位置,前面(BEFORE)或后面(AFTER)

refvalue:指定哪个值的前后插入

value:插入的新值

返回值:插入后列表的长度,若返回-1,则refvalue不存在

r.linsert(key, 'after', 6, 'new_value')

4.key存在时插入。lpushx添加到左边,rpushx添加到右边。返回列表长度

lpushx(key, value) 添加到左边

rpushx(key, value) 添加到右边

只有键存在时,才添加。若键不存在则不添加,也不新创建列表

修改

1.列表中通过索引赋值,返回True或False

lset(key, index, value)

删除

1.删除左边第一个值,返回删除的值

lpop(name)

2.删除右边第一个值,返回删除的值

rpop(name)

3.删除列表中范围之外的所有值,返回删除的值

ltrim(key, start, end)

4.删除列表中N的相同的值,返回删除的数量

lrem(name, num, value)

name:键名

value:需删除的值

num:删除的个数 整数表示从左往右 负数表示从右往左 例如:2 -2

返回值:返回删除的个数

r.lrem('arr', 10, 'delete_name')

5.删除并返回列表中首个元素,列表为空则一直阻塞

blpop(key, timeout=n)

6.删除并返回列表中尾元素,如果列表为空则一直阻塞

brpop(key, timeout=n)

查询

1.列表中获取一段数据,返回列表

lrange(name, start, end)

2.通过索引获取列表值,返回单个元素

lindex(key, index)

3.获取键对应列表的长度,返回数值

llen(key)

三、字典

一个name对应一个字典,类似于字典名字。字典中是key->value

增加

1.单个添加,返回添加的数量

hset(name, key, value)

key存在则修改,否则就是添加

2.批量添加,返回True或False

mapping = {'age':10, 'tel':123}

redis.hmset(name, mapping)

3.如果键不存在添加,否则不处理。返回创建字典长度

hsetnx(name, key, value)

删除

删除键值对,返回删除的个数

hdel(name, key)

可删除多个

hdel(name, *keys)

修改

hset(name, key, value)

key存在则修改,否则就是添加

查询

获取所有键值对,返回一个字典

hgetall(name)

获取所有的key,返回列表

hkeys(name)

获取所有value,返回列表

hvals(name)

获取指定key的值,返回元素

hget(name, key)

获取多个键值对,返回列表

keys = ['age', 'tel']

r.hmget(name, [keys])

获取键值对个数,返回数字

hlen(name)

查询哈希中是否有某个key,返回True或False

hexists(name, key)

四、集合

集合中的元素不重复,一般用于过滤元素

增,返回添加的数量

没有key则创建集合并添加所有元素;有key则直接添加到结合中

sadd(name, value1,value2,value3)

删,返回删除元素的个数

1.删除集合中一个或多个元素

srem(key,values)

srem(key, value1, value2, value3)

2.随机删除并返回集合中元素,返回元素

spop(key)

3.将一个集合移动到另一个集合

smove(src, dst, value)

1.返回集合中所有元素,返回集合

smemebers(key)

2.返回集合中元素的个数,返回个数

scard(key)

3.随机获取n个元素,返回列表

srandmember(name, number=None)

name:键名

number:一个或N个,默认返回一个。若返回N个,则返回List类型

返回值:返回一个值或一个列表

r.srandmemeber(key, number=45)

4.判断某个值是否在集合中,返回True或False

sismember(key, value)

5.差集,返回集合

sdiff(key1, key2)

6.交集,返回集合

sinter(key1, key2)

7.并集,返回集合

sunion(key1, key2)

五、有序集合

有序集合比集合多了一个分数的字段,可对分数升序降序

增,返回增加元素个数

set_dict = {'one': 1, 'two':9, 'three': 12}

r.zadd(key, set_dict)

删,返回删除元素的个数

1.删除有序集合中某个或多个值

zrem(key, *values)

返回删除的个数

2.根据分数范围删除有序集合,返回删除元素的个数

zremrangebyscore(name, min, max)

3.根据排名范围删除集合

zremrangebyrank(key, min, max)

增加有序集合中某个值的分数

zincrby(name, value, amount=1)

value:若存在,则增加其amount分数;若不存在,则增加新值以及对应的分数

amount:增加的值,可以为负数

返回值:增加后的分数 float类型 ;形如: -5.0 <class 'float'>

r.zincrby('Zarten', 'zhi', -5)

1.返回有序集合中元素个数,返回数字

zcard(key)

2.返回有序集合中分数范围内的元素个数,返回数字

zcount(key, min, max)

3.返回有序集合中指定某个值的分数,返回数字

zscore(key, name)

4.返回某个值在有序集合中的分数排名,返回数字

zrank(name, value)

5.返回有序结合分数排序后的一段数据,返回列表

zrange(name, start, end, desc=False, withscores=False, score_cast_func=float)

name:redis的name

start:有序集合索引起始位置(非分数)

end:有序集合索引结束位置(非分数)

desc:排序规则,默认按照分数从小到大排序

withscores:是否获取元素的分数,默认只获取元素的值

score_cast_func:对分数进行数据转换的函数

六、全局函数

全局函数对任何数据结构都适用

1.删除一个或多个键的司所有数据

r.delete(*names)

2.判断redis中是否存在某个键

r.exists(key)

3.重命名redis中建名

r.rename(key, new_key)

4.移动某个键所有数据到某一个db中

r.move(key, db_name)

5.随机获取redis中某个键名

r.randonkey()

6.查看某个键数据结构类型

r.type(key)

返回值:字符串(字节形式) 形如: b'hash'

none (key不存在)

string (字符串)

list (列表)

set (集合)

zset (有序集)

hash (哈希表)

7.设置过期时间

r.expire(key, time)

8.获取键的过期时间

r.ttl(name)

9.获取所有符合规则的键

keys(pattern)

r.keys('n*') 获取所有以n开头的键

python操作Redis方法速记的更多相关文章

  1. redis 原生操作 & python操作redis

    一.基本介绍 1.简介 Redis是由意大利人Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库.Redis全称为:Remote Dictionary Ser ...

  2. python——操作Redis

    在使用django的websocket的时候,发现web请求和其他当前的django进程的内存是不共享的,猜测django的机制可能是每来一个web请求,就开启一个进程去与web进行交互,一次来达到利 ...

  3. Python操作Redis、Memcache、RabbitMQ、SQLAlchemy

    Python操作 Redis.Memcache.RabbitMQ.SQLAlchemy redis介绍:redis是一个开源的,先进的KEY-VALUE存储,它通常被称为数据结构服务器,因为键可以包含 ...

  4. 数据库之redis篇(3)—— Python操作redis

    虽然前面两篇已经说了redis的一些配置安装什么的,篇幅有点长,可能看完了也不知道怎么操作,这里再浓缩一下: 什么是redis redis完全开源免费的,遵守BSD协议,是一个高性能的非关系型key- ...

  5. python操作三大主流数据库(14)python操作redis之新闻项目实战②新闻数据的展示及修改、删除操作

    python操作三大主流数据库(14)python操作redis之新闻项目实战②新闻数据的展示及修改.删除操作 项目目录: ├── flask_redis_news.py ├── forms.py ├ ...

  6. edis 以及 Python操作Redis

    Redis 以及 Python操作Redis   Redis Redis是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis有以下特点: -- Redis支持数据的持 ...

  7. 第三百零一节,python操作redis缓存-管道、发布订阅

    python操作redis缓存-管道.发布订阅 一.管道 redis-py默认在执行每次请求都会创建(连接池申请连接)和断开(归还连接池)一次连接操作,如果想要在一次请求中指定多个命令,则可以使用pi ...

  8. 第三百节,python操作redis缓存-其他常用操作,用于操作redis里的数据name,不论什么数据类型

    python操作redis缓存-其他常用操作,用于操作redis里的数据name,不论什么数据类型 delete(*names)根据删除redis中的任意数据类型 #!/usr/bin/env pyt ...

  9. 第二百九十九节,python操作redis缓存-SortSet有序集合类型,可以理解为有序列表

    python操作redis缓存-SortSet有序集合类型,可以理解为有序列表 有序集合,在集合的基础上,为每元素排序:元素的排序需要根据另外一个值来进行比较,所以,对于有序集合,每一个元素有两个值, ...

随机推荐

  1. freecodecamp挑战

    freecodecamp挑战 2020年3月21初次挑战 完成45关挑战 2020年3月22日 完成至101关 2020年3月23日 完成至144关 2020年3月24日 完成至187关 css结束 ...

  2. 2014 12 27 bestcoder 第一题

    水的不行不行的一道题 也是自己做的第一道题  纪念下 1 #include<stdio.h> 2 #include<string.h> 3 #include<math.h ...

  3. mysql基础操作(四):简单多表查询

    -- 创建部门 (主表) create table dept( id int primary key auto_increment, name varchar(20) ); -- 创建员工 (副表) ...

  4. Python实现GPU加速的基本操作

    技术背景 之前写过一篇讲述如何使用pycuda来在Python上写CUDA程序的博客.这个方案的特点在于完全遵循了CUDA程序的写法,只是支持了一些常用函数的接口,如果你需要自己写CUDA算子,那么就 ...

  5. TCP头部格式和封装

    文章目录 12.3 TCP头部和封装 12.3.1 端口号 12.3.2 序列号 12.3.3 头部长度 12.3.4 相关控制位 12.3.5 窗口大小 12.3.6 校验和 12.3.7 选项字段 ...

  6. .NET 6 RC1 正式发布

    昨天晚上微软发布了.NET 6的两个RC版本中的第一个版本,该版本将于11月正式发布,作为在开源MIT协议下整合所有不同的.NET开发模组件的开源跨平台实现.这是一个从2014年开始,持续多年的,以改 ...

  7. angularjs $http.get 和 $http.post 传递参数

    $http.get请求数据的格式 $http.get(URL,{ params: { "id":id } }) .success(function(response, status ...

  8. go相关

    mac 上build go  如果想要在centos上面执行 必须使用下面的方式 CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -o hello ...

  9. Alex网络结构

    AlexNet网络结构   网络包含8个带权重的层:前5层是卷积层,剩下的3层是全连接层.最后一层全连接层的输出是1000维softmax的输入,softmax会产生1000类标签的分布网络包含8个带 ...

  10. 机器学习——Adaboost

    1 Adaboost 的提出 1990年,Schapire最先构造出一种多项式级的算法,即最初的Boost算法; 1993年,Drunker和Schapire第一次将神经网络作为弱学习器,应用Boos ...