Table des matières
1. Avant-propos
2 Préparation
3 Combat pratique
Maison base de données Redis Méthodes de traitement des données Python Redis

Méthodes de traitement des données Python Redis

Jun 02, 2023 pm 08:19 PM
python redis

1. Avant-propos

Redis : Remote Dictionary Server, c'est-à-dire un service de dictionnaire distant. La couche inférieure de Redis est écrite en langage C. Il s'agit d'une base de données NoSql open source basée sur la mémoire

Parce que les performances de Redis dépassent de loin. d'autres bases de données, et il prend en charge les clusters, il présente les avantages de la distribution et de la synchronisation maître-esclave, il est donc souvent utilisé dans des scénarios tels que la mise en cache des données et la lecture et l'écriture à grande vitesse

2 Préparation

Nous prenons en charge l'installation de. Redis-Server sur le serveur cloud Centos 7.8 à titre d'exemple

Tout d'abord, installez-le sur la base de données Redis du serveur cloud

# 下载epel仓库
yum install epel-release

# 安装redis
yum install redis
Copier après la connexion

Ensuite, modifiez le fichier de configuration Redis via la commande vim, ouvrez la connexion à distance et définissez le mot de passe de connexion

Répertoire du fichier de configuration : /etc/redis.conf

  • bind est modifié en 0.0.0.0 pour permettre l'accès au réseau externe

  • requirepass Définir un mot de passe d'accès

# vim /etc/redis.conf
# 1、bing从127.0.0.1修改为:0.0.0.0,开放远程连接
bind 0.0.0.0 

# 2、设置密码
requirepass 123456
Copier après la connexion

Il est à noter que pour assurer la sécurité des données du serveur cloud, lorsque Redis ouvre l'accès à distance, le mot de passe doit être renforcé

Ensuite, démarrez le service Redis, ouvrez le pare-feu et le port, et configurez le groupe de sécurité du serveur Cloud

Par défaut, le numéro de port utilisé par le service Redis est 6379

De plus, il doit être configuré dans le groupe de sécurité du serveur cloud pour garantir que la base de données Redis peut être connectée normalement

# 启动Redis服务,默认redis端口号是6379
systemctl start redis 

# 打开防火墙
systemctl start firewalld.service

# 开放6379端口
firewall-cmd --zone=public --add-port=6379/tcp --permanent   

# 配置立即生效
firewall-cmd --reload
Copier après la connexion

Après avoir terminé les opérations ci-dessus, nous pouvons utiliser l'outil client Redis-CLI ou Redis pour se connecter

Enfin, pour utiliser Python pour faire fonctionner Redis, nous devons utiliser pip pour installer une dépendance

# 安装依赖,便于操作redis
pip3 install redis
Copier après la connexion

3 Combat pratique

Avant d'exploiter les données dans Redis, nous devons utiliser l'hôte, le numéro de port et le mot de passe instanciés. un objet de connexion Redis

from redis import Redis

class RedisF(object):

    def __init__(self):
        # 实例化Redis对象
        # decode_responses=True,如果不加则写入的为字节类型
        # host:远程连接地址
        # port:Redis端口号
        # password:Redis授权密码
        self.redis_obj = Redis(host='139.199.**.**',port=6379,password='123456',decode_responses=True,charset='UTF-8', encoding='UTF-8')
Copier après la connexion

Ensuite, nous prenons le fonctionnement des chaînes, des listes, des collections d'ensembles, des collections zset, des tables de hachage et des transactions comme exemples pour parler des méthodes d'exploitation de ces données en Python

Opérations sur les chaînes

. Il existe deux façons d'utiliser les chaînes. Les méthodes d'opération sont : set() et mset()

Parmi elles : set() ne peut enregistrer qu'une seule valeur à la fois. La signification des paramètres est la suivante

  • name. : key, représente la clé

  • value : valeur, la valeur à sauvegarder

  • ex : délai d'expiration, en secondes, s'il n'est pas défini, il n'expirera jamais sinon, il sera supprimé à son expiration

    ;
  • px : délai d'expiration, en millisecondes Unité

  • nx/xx : L'exécution de l'opération définie dépend de l'existence ou non de la clé de nom

Python Redis数据处理的方法

Les méthodes d'opération pour obtenir la valeur et la supprimer. les valeurs sont : get(Key), delete(Key or Keys)

# set():单字符串操作
# 添加一个值,并设置超时时间为120s
 self.redis_obj.set('name', 'airpython', ex=120)

# get():获取这个值
print(self.redis_obj.get('name'))

# delete():删除一个值或多个值
self.redis_obj.delete('name')
print(self.redis_obj.get('name'))
Copier après la connexion

Pour le paramétrage de données à valeurs multiples, il vous suffit d'appeler la méthode mset() et d'utiliser les paires clé-valeur pour former un dictionnaire comme un paramètre pour les données à insérer

De même, Redis fournit la méthode mget(), qui peut obtenir plusieurs valeurs à la fois La valeur de la clé

# mset():设置多个值
self.redis_obj.mset({"foo": "foo1", "zoo": "zoo1"})

# mget():获取多个值
result = self.redis_obj.mget("foo", "zoo")
print(result)
Copier après la connexion

2 Opération de liste

Redis fournit de nombreuses méthodes pour exploiter les listes. , dont les plus courants sont les suivants :

  • lpush/rpush : Insérez une ou plusieurs valeurs dans la tête ou la queue de la liste, où lpush représente l'insertion de la tête rpush représente l'insertion de la queue des données

  •  ; lset : Insérer la valeur à la position correspondante de la liste via l'index

  • linsert : Insérer des données avant ou après l'élément de la liste

  • lindex : Obtenir un élément dans la liste via l'index, où 0 représente le premier élément ; -1 représente le dernier élément

  • lrange : Récupère la valeur de la zone spécifiée dans la liste en spécifiant la position de départ et la position de fin

  • llen : Récupère la longueur de la liste si la liste correspond au. La clé n'existe pas, renvoie 0

  • lpop : Supprime et renvoie le premier élément de la liste

  • rpop : Supprime et renvoie le premier élément de la liste Le dernier élément

L'exemple de code est le suivant :

def manage_list(self):
    """
    操作列表
    :return:
    """
    # 1、新增一个列表,并左边插入一个数据
    # 注意:可以一次加入多个元素,也可以一个个元素的加入
    self.redis_obj.lpush('company', '阿里', '腾讯', '百度')

    # 2、移除第一个元素
    self.redis_obj.lpop("company")

    # 3、右边插入数据
    self.redis_obj.rpush('company', '字节跳动', '小米')

    # 4、移除最后一个元素
    self.redis_obj.rpop("company")

    # 5、获取列表的长度
    self.redis_obj.llen("company")

    # 6、通过索引,获取列表中的某一个元素(第二个元素)
    print('列表中第二个元素是:', self.redis_obj.lindex("company", 1))

    # 7、根据范围,查看列表中所有的值
    print(self.redis_obj.lrange('company', 0, -1))
Copier après la connexion

3. Opération Set collection

Set est une collection non ordonnée d'éléments. Les éléments de l'ensemble ne peuvent pas être répétés. Redis fournit également de nombreuses méthodes pour faciliter le fonctionnement de Set collection

Parmi elles, les méthodes les plus couramment utilisées. sont les suivantes :

  • sadd : ajoutez des éléments à l'ensemble. Les éléments qui existent déjà dans l'ensemble seront ignorés. Si l'ensemble n'existe pas, créez un nouvel ensemble

  • scard : renvoie le nombre d'éléments de l'ensemble.

  • smembers : Renvoie tous les éléments de l'ensemble

  • srem : Supprime un ou plusieurs éléments de l'ensemble, en ignorant si l'élément n'existe pas

  • sinter : Renvoie l'intersection de deux ensembles, le résultat est toujours un ensemble

  • sunion : renvoie l'union de deux ensembles

  • sdiff : en utilisant le premier paramètre d'ensemble comme standard, renvoie l'ensemble de différence de deux ensembles

  • sunionstore : calcule l'union de deux ensembles, Enregistrer dans une nouvelle collection

  • sismember : Déterminer si un élément existe dans la collection

  • spop : Supprimer aléatoirement un élément de la collection et revenir

L'exemple de code spécifique est le suivant :

def manage_set(self):
    """
    操作set集合
    :return:
    """
    self.redis_obj.delete("fruit")

    # 1、sadd:新增元素到集合中
    # 添加一个元素:香蕉
    self.redis_obj.sadd('fruit', '香蕉')

    # 再添加两个元素
    self.redis_obj.sadd('fruit', '苹果', '桔子')

    # 2、集合元素的数量
    print('集合元素数量:', self.redis_obj.scard('fruit'))

    # 3、移除一个元素
    self.redis_obj.srem("fruit", "桔子")

    # 再定义一个集合
    self.redis_obj.sadd("fruit_other", "香蕉", "葡萄", "柚子")

    # 4、获取两个集合的交集
    result = self.redis_obj.sinter("fruit", "fruit_other")
    print(type(result))
    print('交集为:', result)

    # 5、获取两个集合的并集
    result = self.redis_obj.sunion("fruit", "fruit_other")
    print(type(result))
    print('并集为:', result)

    # 6、差集,以第一个集合为标准
    result = self.redis_obj.sdiff("fruit", "fruit_other")
    print(type(result))
    print('差集为:', result)

    # 7、合并保存到新的集合中
    self.redis_obj.sunionstore("fruit_new", "fruit", "fruit_other")
    print('新的集合为:', self.redis_obj.smembers('fruit_new'))

    # 8、判断元素是否存在集合中
    result = self.redis_obj.sismember("fruit", "苹果")
    print('苹果是否存在于集合中', result)

    # 9、随机从集合中删除一个元素,然后返回
    result = self.redis_obj.spop("fruit")
    print('删除的元素是:', result)

    # 3、集合中所有元素
    result = self.redis_obj.smembers('fruit')

    print("最后fruit集合包含的元素是:", result)
Copier après la connexion

4 , exploitez la collection zset

La collection Zset est ordonnée par rapport à la collection d'ensembles ordinaire. Les éléments de la collection zset comprennent : la valeur et le score, où le score est utilisé pour le tri

.

其中,比较常用的方法如下:

  • zadd:往集合中新增元素,如果集合不存在,则新建一个集合,然后再插入数据

  • zrange:通过起始点和结束点,返回集合中的元素值(不包含分数);如果设置withscores=True,则返回结果会带上分数

  • zscore:获取某一个元素对应的分数

  • zcard:获取集合中元素个数

  • zrank:获取元素在集合中的索引

  • zrem:删除集合中的元素

  • zcount:通过最小值和最大值,判断分数在这个范围内的元素个数

实践代码如下:

def manage_zset(self):
    """
    操作zset集合
    :return:
    """
    self.redis_obj.delete("fruit")

    # 往集合中新增元素:zadd()
    # 三个元素分别是:"banana", 1/"apple", 2/"pear", 3
    self.redis_obj.zadd("fruit", "banana", 1, "apple", 2, "pear", 3)

    # 查看集合中所有元素(不带分数)
    result = self.redis_obj.zrange("fruit", 0, -1)
    # ['banana', 'apple', 'pear']
    print('集合中的元素(不带分数)有:', result)

    # 查看集合中所有元素(带分数)
    result = self.redis_obj.zrange("fruit", 0, -1, withscores=True)
    # [('banana', 1.0), ('apple', 2.0), ('pear', 3.0)]
    print('集合中的元素(带分数)有:', result)

    # 获取集合中某一个元素的分数
    result = self.redis_obj.zscore("fruit", "apple")
    print("apple对应的分数为:", result)

    # 通过最小值和最大值,判断分数在这个范围内的元素个数
    result = self.redis_obj.zcount("fruit", 1, 2)
    print("集合中分数大于1,小于2的元素个数有:", result)

    # 获取集合中元素个数
    count = self.redis_obj.zcard("fruit")
    print('集合元素格式:', count)

    # 获取元素的值获取索引号
    index = self.redis_obj.zrank("fruit", "apple")
    print('apple元素的索引为:', index)

    # 删除集合中的元素:zrem
    self.redis_obj.zrem("fruit", "apple")
    print('删除apple元素后,剩余元素为:', self.redis_obj.zrange("fruit", 0, -1))
Copier après la connexion

4、操作哈希

哈希表中包含很多键值对,并且每一个键都是唯一的

Redis 操作哈希表,下面这些方法比较常用:

  • hset:往哈希表中添加一个键值对值

  • hmset:往哈希表中添加多个键值对值

  • hget:获取哈希表中单个键的值

  • hmget:获取哈希表中多个键的值列表

  • hgetall:获取哈希表中种所有的键值对

  • hkeys:获取哈希表中所有的键列表

  • hvals:获取哈表表中所有的值列表

  • hexists:判断哈希表中,某个键是否存在

  • hdel:删除哈希表中某一个键值对

  • hlen:返回哈希表中键值对个数

对应的操作代码如下:

def manage_hash(self):
    """
    操作哈希表
    哈希:一个键对应一个值,并且键不容许重复
    :return:
    """
    self.redis_obj.delete("website")

    # 1、新建一个key为website的哈希表
    # 往里面加入数据:baidu(field),www.baidu.com(value)
    self.redis_obj.hset('website', 'baidu', 'www.alibababaidu.com')
    self.redis_obj.hset('website', 'google', 'www.google.com')

    # 2、往哈希表中添加多个键值对
    self.redis_obj.hmset("website", {"tencent": "www.qq.com", "alibaba": "www.taobao.com"})

    # 3、获取某一个键的值
    result = self.redis_obj.hget("website", 'baidu')
    print("键为baidu的值为:", result)

    # 4、获取多个键的值
    result = self.redis_obj.hmget("website", "baidu", "alibaba")
    print("多个键的值为:", result)

    # 5、查看hash表中的所有值
    result = self.redis_obj.hgetall('website')
    print("哈希表中所有的键值对为:", result)

    # 6、哈希表中所有键列表
    # ['baidu', 'google', 'tencent', 'alibaba']
    result = self.redis_obj.hkeys("website")
    print("哈希表,所有的键(列表)为:", result)

    # 7、哈希表中所有的值列表
    # ['www.alibababaidu.com', 'www.google.com', 'www.qq.com', 'www.taobao.com']
    result = self.redis_obj.hvals("website")
    print("哈希表,所有的值(列表)为:", result)

    # 8、判断某一个键是否存在
    result = self.redis_obj.hexists("website", "alibaba")
    print('alibaba这个键是否存在:', result)

    # 9、删除某一个键值对
    self.redis_obj.hdel("website", 'baidu')
    print('删除baidu键值对后,哈希表的数据包含:', self.redis_obj.hgetall('website'))

    # 10、哈希表中键值对个数
    count = self.redis_obj.hlen("website")
    print('哈希表键值对一共有:', count)
Copier après la connexion

5、操作事务管道

Redis 支持事务管道操作,能够将几个操作统一提交执行

操作步骤是:

  • 首先,定义一个事务管道

  • 然后通过事务对象去执行一系列操作

  • 提交事务操作,结束事务操作

下面通过一个简单的例子来说明:

def manage_steps(self):
    """
    执行事务操作
    :return:
    """
    # 1、定义一个事务管道
    self.pip = self.redis_obj.pipeline()

    # 定义一系列操作
    self.pip.set('age', 18)

    # 增加一岁
    self.pip.incr('age')

    # 减少一岁
    self.pip.decr('age')

    # 执行上面定义3个步骤的事务操作
    self.pip.execute()

    # 判断
    print('通过上面一些列操作,年龄变成:', self.redis_obj.get('age'))
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Méthode de Navicat pour afficher le mot de passe de la base de données MongoDB Méthode de Navicat pour afficher le mot de passe de la base de données MongoDB Apr 08, 2025 pm 09:39 PM

Il est impossible de visualiser le mot de passe MongoDB directement via NAVICAT car il est stocké sous forme de valeurs de hachage. Comment récupérer les mots de passe perdus: 1. Réinitialiser les mots de passe; 2. Vérifiez les fichiers de configuration (peut contenir des valeurs de hachage); 3. Vérifiez les codes (May Code Hardcode).

Dans quelle mesure le mot de passe de Navicat est-il sécurisé? Dans quelle mesure le mot de passe de Navicat est-il sécurisé? Apr 08, 2025 pm 09:24 PM

La sécurité du mot de passe de Navicat repose sur la combinaison de cryptage symétrique, de force de mot de passe et de mesures de sécurité. Des mesures spécifiques incluent: l'utilisation de connexions SSL (à condition que le serveur de base de données prenne en charge et configure correctement le certificat), à la mise à jour régulièrement de NAVICAT, en utilisant des méthodes plus sécurisées (telles que les tunnels SSH), en restreignant les droits d'accès et, surtout, à ne jamais enregistrer de mots de passe.

Comment utiliser Aws Glue Crawler avec Amazon Athena Comment utiliser Aws Glue Crawler avec Amazon Athena Apr 09, 2025 pm 03:09 PM

En tant que professionnel des données, vous devez traiter de grandes quantités de données provenant de diverses sources. Cela peut poser des défis à la gestion et à l'analyse des données. Heureusement, deux services AWS peuvent aider: AWS Glue et Amazon Athena.

Quelle est la façon dont le stockage du mot de passe NAVICAT? Quelle est la façon dont le stockage du mot de passe NAVICAT? Apr 08, 2025 pm 09:15 PM

Navicat utilise un algorithme de cryptage AES pour crypter les mots de passe et utilise un mécanisme de clé dynamique pour protéger les mots de passe, mais il n'est pas infaillible. Pour améliorer la sécurité, il est recommandé de configurer des mots de passe complexes, de les modifier régulièrement, de garder le système et le logiciel à jour et de protéger contre les logiciels malveillants.

Comment afficher le mot de passe de la base de données dans Navicat pour MongoDB? Comment afficher le mot de passe de la base de données dans Navicat pour MongoDB? Apr 08, 2025 pm 09:21 PM

Navicat pour MongoDB ne peut pas afficher le mot de passe de la base de données car le mot de passe est crypté et contient uniquement des informations de connexion. La récupération de mots de passe nécessite MongoDB lui-même et l'opération spécifique dépend de la méthode de déploiement. Sécurité d'abord, développez de bonnes habitudes de mot de passe et n'essayez jamais d'obtenir des mots de passe à partir d'outils tiers pour éviter les risques de sécurité.

Comment afficher le mot de passe de la base de données dans Navicat pour SQLite? Comment afficher le mot de passe de la base de données dans Navicat pour SQLite? Apr 08, 2025 pm 09:06 PM

En utilisant Navicat pour SQLite, vous ne pouvez pas obtenir directement le mot de passe de la base de données, car les bases de données SQLite ne reposent généralement pas sur les composants indépendants du côté serveur, et le stockage et la gestion du mot de passe s'appuient entièrement sur la conception de l'application elle-même. Les mesures de sécurité incluent: le chiffrement des fichiers de base de données, en utilisant la vérification du mot de passe de la couche d'application ou la sélection de bases de données de niveau supérieur.

Comment afficher les mots de passe de la base de données dans Navicat Premium? Comment afficher les mots de passe de la base de données dans Navicat Premium? Apr 08, 2025 pm 09:12 PM

NAVICAT Premium ne stocke pas les mots de passe de la base de données. Les informations de connexion sont juste un paramètre de connexion et le mot de passe est stocké crypté ou non stocké. Si vous oubliez votre mot de passe, vous devez utiliser l'outil de base de données pour le réinitialiser. Si vous devez vérifier le mot de passe de la base de données connectée, il n'est pas possible; Si vous soupçonnez que la fuite est trouvée, vous devez vérifier le répertoire d'installation et la sécurité du système. Le premier principe est d'abord la sécurité et ne faites pas confiance aux outils de craquage à la légère.

Redis: rationalisation du traitement et de la mise en cache des données Redis: rationalisation du traitement et de la mise en cache des données Apr 09, 2025 am 12:02 AM

Redis simplifie les méthodes de traitement et de mise en cache des données, notamment: 1) Support de structure de données multifonctionnels, 2) Mode de publication de publication, 3) Stockage de la mémoire et structure de données efficace, 4) Mécanisme de persistance. Grâce à ces fonctionnalités, Redis peut améliorer les performances et l'efficacité des applications.

See all articles