百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

Python教程——24.Redis 数据库(python连接redis数据库)

off999 2024-11-04 13:16 34 浏览 0 评论

客户端和服务端命令

服务器端

  • 服务器端的命令为redis-server
  • 可以使?help查看帮助?档redis-server --help
  • 服务器操作
    • ps aux | grep redis 查看redis服务器进程
    • sudo kill -9 pid 杀死redis服务器
    • sudo redis-server /etc/redis/redis.conf指定加载的配置文件


客户端

  • 客户端的命令为redis-cli
  • 可以使?help查看帮助?档
    • redis-cli --help

  • 连接redis
    • redis-cli

  • 运?测试命令
    • ping

  • 切换数据库
  • 数据库没有名称,默认有16个,通过0-15来标识,连接redis默认选择第一个数据库
    • select 10


数据操作

在学习数据操作之前,我们需要先了解Redis的数据结构。Redis是key-value的数据结构,每条数据都是一个键值对。键的类型是字符串,并且键不能重复。

  • Reids中的数据类型:
    • 字符串string
    • 哈希hash
    • 列表list
    • 集合set
    • 有序集合zset


首先我们先学习字符串类型。字符串类型是 Redis 中最为基础的数据存储类型,它在 Redis 中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如JPEG图像数据或Json对象描述信息等。在Redis中字符串类型的Value最多可以容纳的数据长度是512M。


普通键值对保存

如果设置的键不存在则为添加,如果设置的键已经存在则修改

brset key value

案例:设置键为name值为tuling的数据

brset name tuling


设置键值及过期时间,以秒为单位。

brsetex key seconds value

案例:设置键为name值为安娜过期时间为3秒的数据

brsetex name 3 张三


设置多个键值

brmset key1 value1 key2 value2 ...

案例:设置键为name值为双双,键为age值为18,键为gender值为女

brmset name 张三 age 18 gender 女


根据键获取值,如果不存在返回nil

brget key

案例:获取键name的值

brget name


根据多个键获取多个值

brmget key1 key2 key3 ...

案例:获取键为name、age、gender的值

brmget name age gender



键命令

案例一:查看所有键

br// 语法brkeys patternbrbr// 查看所有键brkeys *


案例二:查看名称中包含n的键

brkeys n*


案例三:判断键是否存在,如果存在返回1,否则返回0

br// 语法brexists keybrbr// 判断键 name address 是否存在brexists namebrexists address


案例四:查看键对应的value类型

br// 语法brtype keybrbr// 判断age对应的值的类型brtype age


案例五:删除键值对

br// 语法brdel key1 key2 ...brbr// 删除age与genderbrdel age gender

hash类型

hash用于存储对象,对象的结构为属性、值,值的类型为string

设置单个属性

br// 语法brhset key field valuebrbr// 设置user的属性为name,name对应的值为tulingbrhset user name tuling


设置多个属性

br// 语法brhmset key field1 value1 field2 value2 ...brbr// 设置键为py_stu的字段name对应的值为tuling 字段age对应的值为10brhmset py_stu name tuling age 10


获取指定的键所有的字段

br// 语法brhkeys keybrbr// 获取键py_stu中的所有字段brhkeys py_stu


获取一个字段的值

br// 语法brhget key fieldbrbr// 获取py_stu中的name字段所对应的值brhget py_stu name


获取指定的多个字段的值

br// 语法brhmget key field1 field2 ...brbr// 获取py_stu中的name、age的值brhmget py_stu name age


获取所有字段的值

br// 语法brhvals keybr br// 获取py_stu中的所有字段的值brhvals py_stu


删除字段,字段对应的值会被一起删除

br// 语法brhdel key field1 field2 ...brbr// 删除py_stu中的age字段brhdel py_stu age


如果想要删除整个hash数据,则使用del命令

br// 示例brdel py_stu

list类型

从列表左侧插入数据

br// 语法brlpush key value1 value2 ...brbr// 从键为name_1的列表左侧插入数据a、b、cbrlpush name_1 a b c


在列表右侧插入数据

br// 语法brrpush key value1 value2 ...brbr// 从键为name_2的列表的右侧插入数据a、b、cbrrpush name_2 a b c


数据获取只有左获取

br// 语法brlrange key start stopbrbr// 获取列表name_1、name_2中的所有元素brlrange name_1 0 -1brlrange name_2 0 -1brbr/*br    start、stop为元素的索引br        1. 索引从左侧开始,第一个元素为0br    2. 索引可以是负数,表示从尾部开始计数,如-1表示最后一个元素br*/


删除指定元素

br/*br    根据索引count删除对应的值br   1. count > 0: 从左往右删除br   2. count < 0: 从右往左删除br   3. count = 0: 删除所有br*/brbr// 语法brlrem key count valuebrbr// 创建测试列表并左插入三组a、bbrlpush test_list a b a b a bbrbr// 查看列表数据brlrange test_list 0 -1brbr// 从test_list列表中的右侧开始删除2个b字母brlrem test_list -2 bbrbr// 查看删除效果brlrange test_list 0 -1


set类型

集合类型是无序的,并且集合中的元素类型为string。在集合中的元素具有唯一性,不能重复。

集合类型没有修改操作。


添加元素

br// 语法brsadd key member1 member2 ...brbr// 向键user_name_1的集合中添加元素:zhangsan、lisi、wangwubrsadd user_name_1 zhangsan lisi wangwu


获取元素

br// 获取所有元素 brsmembers keybrbr// 获取键user_name_1集合中所有的元素brsmembers user_name_1


删除元素

br// 删除指定元素brsrem keybrbr// 删除指定键user_name_1中的元素:wangwubrsrem user_name_1 wangwu


zset类型

zset类型是一个有序集合,元素为string类型。和无序集合一样,元素具有唯一性,不能重复,并没有修改操作。

在有序集合中的每个元素都会关联一个double类型的score,表示权重,通过权重将元素从小到大排序。


添加数据

br// 语法brzadd key socre1 member1 socre2 member2 ...brbr// 向键user_name_2集合中添加元素: lisi、wangwu、zhaoliu、zhangsan 权重分别为4 5 6 3brzadd user_name_2 4 lisi 5 wangwu 6 zhaoliu 3 zhangsan


获取数据

br// 语法brzrange key start stopbrbr/*br    start、stop为元素的索引br    1. 索引从左侧开始,第一个元素索引为0br    2. 索引可以是负数,表示从尾部开始计数,如-1表示最后一个元素br*/brbr// 获取键user_name_2集合中的所有元素brzrange user_name_2 0 -1


删除数据

br// 语法brzrem key member1 member2 ...brbr// 删除user_name_2集合中的元素: zhangsanbrzrem user_name_2 zhangsan


Python操作Redis

首先大家需要通过pip下载redis连接库

下列代码为redis连接示例:

brfrom redis import Redisbrbr'''brhost: redis服务端ipbrport: redis服务端端口brdb: 仓库号br'''brredis_obj = Redis(host='localhost', port=6379, db=0)


准备工作

创建代码目录文件夹,在文件夹中创建redis_string.py文件

brfrom redis import Redisbrbrbrif __name__ == "__main__":br    try:br        # host port db等参数是可选项br        redis_obj = Redis()br    except Exception as e:br        print(e)


添加数据

使用set方法添加键值对,如果添加成功返回True,否则返回False

brfrom redis import Redisbrbrbrif __name__ == "__main__":br    try:br        # host port db等参数是可选项br        redis_obj = Redis()br        # 添加数据br        result = redis_obj.set('name', '张三')br        # 如果添加成功则返回Truebr        print(result)br    except Exception as e:br        print(e)


获取数据

使用get方法获取数据,如果键存在返回对应的值,否则返回None

brfrom redis import Redisbrbrbrif __name__ == "__main__":br    try:br        # host port db等参数是可选项br        redis_obj = Redis()br        # 添加数据br        # result = redis_obj.set('name', '张三')brbr        # 获取数据br        result = redis_obj.get('name')br        print(result)br    except Exception as e:br        print(e)


修改数据

使用set方法进行修改,如果键存在则进行修改,否则创建新数据

brfrom redis import Redisbrbrbrif __name__ == "__main__":br    try:br        # host port db等参数是可选项br        redis_obj = Redis()br        # 添加数据br        # result = redis_obj.set('name', '张三')brbr        # 获取数据br        # result = redis_obj.get('name')brbr        # 数据修改br        redis_obj.set('name', '李四')br        result = redis_obj.get('name')br        print(result)br    except Exception as e:br        print(e)


删除数据

使用delete方法删除键值对,如果删除成功则返回受影响的键的数量,否则返回0

brfrom redis import Redisbrbrbrif __name__ == "__main__":br    try:br        # host port db等参数是可选项br        redis_obj = Redis()brbr        result = redis_obj.delete('name')br        print(result)br    except Exception as e:br        print(e)


获取键

使用keys方法获取键,可以使用正则表达式

from redis import Redisbrbrbrif __name__ == "__main__":br    try:br        # host port db等参数是可选项br        redis_obj = Redis()brbr        result = redis_obj.keys()br        print(result)br    except Exception as e:br        print(e)

相关推荐

阿里云国际站ECS:阿里云ECS如何提高网站的访问速度?

TG:@yunlaoda360引言:速度即体验,速度即业务在当今数字化的世界中,网站的访问速度已成为决定用户体验、用户留存乃至业务转化率的关键因素。页面加载每延迟一秒,都可能导致用户流失和收入损失。对...

高流量大并发Linux TCP性能调优_linux 高并发网络编程

其实主要是手里面的跑openvpn服务器。因为并没有明文禁p2p(哎……想想那么多流量好像不跑点p2p也跑不完),所以造成有的时候如果有比较多人跑BT的话,会造成VPN速度急剧下降。本文所面对的情况为...

性能测试100集(12)性能指标资源使用率

在性能测试中,资源使用率是评估系统硬件效率的关键指标,主要包括以下四类:#性能测试##性能压测策略##软件测试#1.CPU使用率定义:CPU处理任务的时间占比,计算公式为1-空闲时间/总...

Linux 服务器常见的性能调优_linux高性能服务端编程

一、Linux服务器性能调优第一步——先搞懂“看什么”很多人刚接触Linux性能调优时,总想着直接改配置,其实第一步该是“看清楚问题”。就像医生看病要先听诊,调优前得先知道服务器“哪里...

Nginx性能优化实战:手把手教你提升10倍性能!

关注△mikechen△,十余年BAT架构经验倾囊相授!Nginx是大型架构而核心,下面我重点详解Nginx性能@mikechen文章来源:mikechen.cc1.worker_processe...

高并发场景下,Spring Cloud Gateway如何抗住百万QPS?

关注△mikechen△,十余年BAT架构经验倾囊相授!大家好,我是mikechen。高并发场景下网关作为流量的入口非常重要,下面我重点详解SpringCloudGateway如何抗住百万性能@m...

Kubernetes 高并发处理实战(可落地案例 + 源码)

目标场景:对外提供HTTPAPI的微服务在短时间内收到大量请求(例如每秒数千至数万RPS),要求系统可弹性扩容、限流降级、缓存减压、稳定运行并能自动恢复。总体思路(多层防护):边缘层:云LB...

高并发场景下,Nginx如何扛住千万级请求?

Nginx是大型架构的必备中间件,下面我重点详解Nginx如何实现高并发@mikechen文章来源:mikechen.cc事件驱动模型Nginx采用事件驱动模型,这是Nginx高并发性能的基石。传统...

Spring Boot+Vue全栈开发实战,中文版高清PDF资源

SpringBoot+Vue全栈开发实战,中文高清PDF资源,需要的可以私我:)SpringBoot致力于简化开发配置并为企业级开发提供一系列非业务性功能,而Vue则采用数据驱动视图的方式将程序...

Docker-基础操作_docker基础实战教程二

一、镜像1、从仓库获取镜像搜索镜像:dockersearchimage_name搜索结果过滤:是否官方:dockersearch--filter="is-offical=true...

你有空吗?跟我一起搭个服务器好不好?

来人人都是产品经理【起点学院】,BAT实战派产品总监手把手系统带你学产品、学运营。昨天闲的没事的时候,随手翻了翻写过的文章,发现一个很严重的问题。就是大多数时间我都在滔滔不绝的讲理论,却很少有涉及动手...

部署你自己的 SaaS_saas如何部署

部署你自己的VPNOpenVPN——功能齐全的开源VPN解决方案。(DigitalOcean教程)dockovpn.io—无状态OpenVPNdockerized服务器,不需要持久存储。...

Docker Compose_dockercompose安装

DockerCompose概述DockerCompose是一个用来定义和管理多容器应用的工具,通过一个docker-compose.yml文件,用YAML格式描述服务、网络、卷等内容,...

京东T7架构师推出的电子版SpringBoot,从构建小系统到架构大系统

前言:Java的各种开发框架发展了很多年,影响了一代又一代的程序员,现在无论是程序员,还是架构师,使用这些开发框架都面临着两方面的挑战。一方面是要快速开发出系统,这就要求使用的开发框架尽量简单,无论...

Kubernetes (k8s) 入门学习指南_k8s kubeproxy

Kubernetes(k8s)入门学习指南一、什么是Kubernetes?为什么需要它?Kubernetes(k8s)是一个开源的容器编排系统,用于自动化部署、扩展和管理容器化应用程序。它...

取消回复欢迎 发表评论: