程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Comment utiliser Python pour manipuler la base de données redis

編輯:Python

Comment utiliserPythonFonctionnementRedisBase de données

Le contenu de cet article est principalement expliqué“Comment utiliserPythonFonctionnementRedisBase de données”,Les amis intéressés peuvent venir voir.La méthode décrite dans cet article est simple et rapide,Pratique.Ensuite, laissez le petit rédacteur en chef vous amener à étudier“Comment utiliserPythonFonctionnementRedisBase de données”C'est parti.!

Introduction

RedisEst une source ouverte basée sur la mémoire qui peut également être persistanteKey-ValueBase de données,AdoptionANSI CRédaction Linguistique.Il possède une riche structure de données,Avec des fonctions transactionnelles,Garantir l'atomicité de l'ordre.Parce que c'est une base de données de mémoire,Lire et écrire très rapidement,Accessibilité10w/sTaux d'évaluation de,Il est donc généralement appliqué aux données qui changent rapidement、Communication en temps réel、Cache, etc..Mais les bases de données de mémoire prennent généralement en compte la taille de la mémoire de la machine.

RedisOui.16Bases de données logiques(db0-db15),Chaque projet de base de données logique est isolé,Utilisation par défautdb0Base de données.Si vous sélectionnez2Bases de données,Par ordre select 2 ,pythonLa base de données peut être spécifiée lors de la connexion.

Structure commune des données

  • String-String

  • List-Liste

  • Hash-Hashi

  • Set-Ensemble

  • ZSet-Rassemblement ordonné

  • Bitmap-Bitmap

pythonNous utilisonsredis-pyFonctionnement de la bibliothèqueRedisBase de données,Les points saillants sont les suivants.

Prémisse:Installation requiseRedisBase de données,Si ce n'est pas installé ici

Installation

pip3 install redis

Connexion

La première façon:Fréquent

import redis redis_conn = redis.Redis(host='127.0.0.1', port= 6379, password= 'your pw', db= 0)

La deuxième façon:Pool de connexion

import redis redis_pool = redis.ConnectionPool(host='127.0.0.1', port= 6379, password= 'your pw', db= 0)redis_conn = redis.Redis(connection_pool= redis_pool)

redis Les types de valeurs de retour de caractères moyens sont tous des octets (bytes)Type

String String(Paire de clés)

InredisMoyenne,Une clé correspond à une valeur

1.String set Définir une seule valeur clé

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

  • ex:Date d'expiration(Secondes),Quand le temps sera écouléredisSera automatiquement supprimé

  • px:Date d'expiration(MS),Quand le temps sera écouléredisSera automatiquement supprimé.ex、pxUn sur deux.

  • nx:Si défini àTrue,Alors seulementnameLorsqu'il n'existe pas,En courssetOpération seulement

  • xx:Si défini àTrue,Alors seulementnameQuand il existe,En courssetOpération seulement

redis_conn.set('name_2', 'Zarten_2')

2.String get Obtenir une valeur unique

v = redis_conn.get('name_1')print(v)

3.String mset Définir plusieurs valeurs clés

mset(*args, **kwargs)

redis_conn.mset(name_1= 'Zarten_1', name_2= 'Zarten_2')

Ou

name_dict = {    'name_4' : 'Zarten_4',    'name_5' : 'Zarten_5'}redis_conn.mset(name_dict)

4.String mget Obtenir plusieurs valeurs

mget(keys, *args)

m = redis_conn.mget('name_1', 'name_2')#m = redis_conn.mget(['name_1', 'name_2']) Ça marche.print(m)

5.String getset Définir une nouvelle valeur pour une clé existante ,Et renvoie la valeur originale

getset(name, value)

Quand la clé donnée n'existe pas , Définit sa nouvelle valeur ,Mais la valeur de retour estNone

v = redis_conn.getset('name_1', 'hi')

6.String setrange Modifier une clé en fonction de l'index valueValeur

setrange(name, offset, value)

La valeur de retour est:Longueur de chaîne modifiée

  • name:Clé, Ajouter automatiquement lorsque donné n'existe pas

  • offset:Offset,Par0C'est parti.

  • value: Caractères ou chaînes modifiés , Chaîne avec offset En arrière

length = redis_conn.setrange('name_2', 1, 'zhihu')print(length)

7.String getrange Obtenir une partie d'une clé à partir d'un index valueValeur

Si la clé donnée n'existe pas ,Renvoie une valeur nulle b''

getrange(key, start, end)

v = redis_conn.getrange('name_4', 0, 2)

Les résultats sont les suivants::

8.String strlen AccèsvalueLongueur

strlen(name)

Quand la clé donnée n'existe pas ,La valeur de retour est0

length = redis_conn.strlen('name_2')

9.String incr intTypevalueAuto - augmentation(À déduire)

Même chose.:À déduire,decr(name, amount=1)

La valeur de la clé donnée doit être un entier ou une valeur numérique de chaîne ,Sinon, une erreur sera signalée. L'auto - augmentation par défaut est 1

incr(name, amount=1)

La valeur de retour est:Valeur modifiée,intType

redis_conn.set('num_2', 2)#redis_conn.set('num_2', '2') C'est bon. v = redis_conn.incr('num_2')

10.String incrbyfloat Type de flotteurvalueAuto - augmentation

incrbyfloat(name, amount=1.0)

La valeur de retour est:Type de flotteurfloat

v = redis_conn.incrbyfloat('num_2')

11.String append valueAjouter après

append(key, value)

Si la clé donnée n'existe pas , Alors définissez la nouvelle valeur

La valeur de retour est la longueur de la chaîne modifiée

length = redis_conn.append('name_5', '666')

Les résultats sont les suivants::

List Liste

InredisMoyenne, Une clé correspond à une liste

12.List lpush Ajouter une valeur à gauche de la liste rpush(A droite)

lpush(name, *values)

value Quand il y a plus d'une valeur , Ajouter de gauche à droite à gauche de la liste ,Les types peuvent varier

Quand la clé donnée n'existe pas ,Créer une nouvelle liste

Valeur de retour:Taille de la liste

v = redis_conn.lpush('Zarten', 1,2,3,4,5)#v = redis_conn.lpush('Zarten', 6)

13.List lpushx Lorsque la clé existe, Ajouter à gauche de la liste rpushx(À droite)

lpushx(name, value)

Seulement quand la clé existe,Ajouter. Si la clé n'existe pas, n'ajoutez pas , Ni créer une nouvelle liste

La valeur de retour est:Taille de la liste

v = redis_conn.lpushx('Zarten_1', 'hehe')

14.List llen Obtient la taille de la liste des clés données

llen(name)

v = redis_conn.llen('Zarten')

15.List linsert Insérer une nouvelle valeur au milieu de la liste

linsert(name, where, refvalue, value)

  • name:Nom de la clé

  • where:Emplacement,Devant.(BEFORE)Ou derrière.(AFTER)

  • refvalue: Précisez quelle valeur insérer avant et après

  • value: Nouvelle valeur insérée

Valeur de retour: Longueur de la liste après insertion ,En cas de retour-1,EtrefvalueN'existe pas

Données avant insertion :

v = redis_conn.linsert('Zarten', 'AFTER', 6, 'b')

Données insérées :

16.List lset Assigner des valeurs par index dans la liste

lset(name, index, value)

Valeur de retour:Succès True Sinon False

v = redis_conn.lset('Zarten', 2, 'cc')

17.List lindex Obtenir la valeur de la liste par index

lindex(name, index)

v = redis_conn.lindex('Zarten', 2)

18.List lrange Obtenir un segment de données dans la liste

lrange(name, start, end)

Valeur de retour:List Un segment de données de type

v = redis_conn.lrange('Zarten', 2, 5)

19.List lpop Supprimer la première valeur à gauche rpop(A droite)

lpop(name)

Valeur de retour:Valeur de l'élément supprimé

v = redis_conn.rpop('Zarten')

20.List lrem Supprimer de la listeNMême valeur

lrem(name, value, num=0)

  • name:Nom de la clé

  • value: Valeur à supprimer

  • num:Nombre de suppressions Un entier représente de gauche à droite Un nombre négatif signifie de droite à gauche Par exemple:2 -2

Valeur de retour:Renvoie le nombre de suppressions

v = redis_conn.lrem('Zarten', 'hehe', -2)

21.List ltrim Supprimer toutes les valeurs en dehors de la plage dans la liste

ltrim(name, start, end)

Valeur de retour:Succès True

v = redis_conn.ltrim('Zarten', 5, 10)

22.List blpop Supprime et renvoie la valeur la plus à gauche de la liste brpop(À droite)

blpop(keys, timeout=0)

  • keys: Une clé donnée

  • timeout:Temps d'attente,Par défaut0,Ça veut dire attendre.

Valeur de retour:tupleType Shadow!: (Nom de la clé, Valeur supprimée ) (b'Zarten', b'hehe')

v = redis_conn.blpop('Zarten')

23.List rpoplpush La valeur la plus à droite d'une liste est enlevée et ajoutée à la plus à gauche d'une autre liste brpoplpushVersion bloquée

rpoplpush(src, dst)

brpoplpush(src, dst, timeout=0)PourrpoplpushVersion bloquée de,timeoutPour0Heure,Toujours bloqué

Valeur de retour: Valeur de l'élément extrait

v = redis_conn.rpoplpush('Zarten', 'Zhihu')

Hash Hashi

Stockage interne sous forme de paires de valeurs clés individuelles

24.Hash hset Ajouter une paire de valeurs clés au hachage

hset(name, key, value)

keyExiste,Modifier,Ajouter autrement

Valeur de retour: Renvoie le nombre d'ajouts réussis int

v = redis_conn.hset('Zarten', 'age', 10)

25.Hash hmset Définir plusieurs paires de valeurs clés dans le hachage

hmset(name, mapping)

mapping:dict Type

Valeur de retour:Succès True

v = redis_conn.hmset('Zarten', {'sex':1, 'tel':'123'})

26.Hash hmget Obtenir plusieurs paires de valeurs clés dans le hachage

hmget(name, keys, *args)

Valeur de retour:Liste des valeurs list Shadow!: [b'1', b'123'] <class 'list'>

v = redis_conn.hmget('Zarten', ['sex', 'tel'])#v = redis_conn.hmget('Zarten', 'sex', 'tel') - Oui.ok

27.Hash hget Obtenir la désignationkeyValeur de

hget(name, key)

v = redis_conn.hget('Zarten', 'age')

28.Hash hgetall Obtient toutes les paires de valeurs clés dans le hachage

hgetall(name)

Valeur de retour:dictType

v = redis_conn.hgetall('Zarten')

29.Hash hlen Obtient le nombre de paires de valeurs clés dans le hachage

hlen(name)

v = redis_conn.hlen('Zarten')

30.Hash hkeys Obtenir toutes les clés dans le hachage key

hkeys(name)

Valeur de retour:listType

v = redis_conn.hkeys('Zarten')

31.Hash hvals Obtenir toutes les valeurs dans le hachage value

hvals(name)

Valeur de retour:listType

v = redis_conn.hvals('Zarten')

32.Hash hexists Vérifiez s'il y a une clé dans le hachage key

hexists(name, key)

Valeur de retour:Oui. True ;Sinon False

v = redis_conn.hexists('Zarten', 'b')

33.Hash hdel Supprimer les paires de valeurs clés dans le hachage (key-value)

hdel(self, name, *keys)

Valeur de retour:int Nombre de suppressions

v = redis_conn.hdel('Zarten', 'age')

34.Hash hincrby En augmentant le hachage keyCorrespondantvalueValeur( Doit être un type de valeur entier )

hincrby(name, key, amount=1)

Si on donne keyCréer s'il n'existe pas,amountAugmentation par défaut1,Peut être négatif

Valeur de retour:int Valeur ajoutée

v = redis_conn.hincrby('Zarten', 'sex', -3)

35.Hash hincrbyfloat Auto - augmentation du nombre de points flottants Ibid.hincrby

hincrbyfloat(name, key, amount=1.0)

36.Hash expire Définir le temps d'expiration de la clé entière

expire(name, time)

time:Secondes,Dès qu'il est temps, Suppression automatique immédiate

v = redis_conn.expire('Zarten', 10)

37.Hash hscan L'itération incrémentale récupère les données dans le hachage

hscan(name, cursor=0, match=None, count=None)

  • name:redisDename

  • cursor:Curseur(Obtenir des données par lots à partir du curseur)

  • match:Correspond à la désignationkey,Par défautNone Représente toutkey

  • count:Obtenir un nombre minimum de pièces par tranche,Par défautNoneIndique l'adoptionRedisNombre de tranches par défaut pour

Valeur de retour:tuple Type ;(Emplacement de la numérisation,Tous lesdictDonnées)

v = redis_conn.hscan('Zarten')

38.Hash hscan_iter RetourhscanGénérateur pour

hscan_iter(name, match=None, count=None)

Voir la fonction ci - dessus hscan

v = redis_conn.hscan_iter('Zarten')for i in v:    print(type(i), i)

Set Ensemble

Les éléments de la collection ne sont pas dupliqués, Généralement utilisé pour filtrer les éléments

39.Set sadd Ajouter des éléments à la collection

sadd(name, *values)

Si vous insérez un élément existant , Ne pas insérer automatiquement

v = redis_conn.sadd('Zarten', 'apple', 'a', 'b', 'c')

40.Set scard Renvoie le nombre d'éléments dans la collection

scard(name)

v = redis_conn.scard('Zarten')

41.Set smembers Obtenir tous les éléments de la collection

smembers(name)

Valeur de retour:setType,Shadow!: {b'a', b'apple', b'c', b'b'}

v = redis_conn.smembers('Zarten')

42.Set srandmember Prenez au hasard un ou NÉléments

srandmember(name, number=None)

  • name:Nom de la clé

  • number:Un ouN- Oui.,Renvoie un par défaut.En cas de retourN- Oui.,RenvoieListType

Valeur de retour: Renvoie une valeur ou une liste

v = redis_conn.srandmember('Zarten', 2)

43.Set sismember Déterminer si une valeur est dans la collection

sismember(name, value)

Valeur de retour:True In False Non.

v = redis_conn.sismember('Zarten', 'appl')

44.Set spop Supprimer au hasard et renvoyer les éléments de la collection

spop(name)

v = redis_conn.spop('Zarten')

45.Set srem Supprimer un ou plusieurs éléments de la collection

srem(name, *values)

Valeur de retour:Renvoie le nombre de suppressions int

v = redis_conn.srem('Zarten', 'c', 'a')

46.Set smove Déplacer les valeurs d'une collection vers une autre

smove(src, dst, value)

SivalueLorsqu'il n'existe pas,RetourFalse

Valeur de retour:Succès True

v = redis_conn.smove('Zarten', 'Fruit', 'apple')

47.Set sdiff Renvoie tous les éléments d'une collection qui ne sont pas dans une autre (Ensemble de différences)

sdiff(keys, *args)

InkeysEnsemble, Éléments qui ne sont pas dans d'autres collections

Valeur de retour:setType {b'2', b'4', b'3', b'1'}

v = redis_conn.sdiff('Zarten', 'Fruit')

48.Set sdiffstore Au - dessussdiffValeur de retour de(Ensemble de différences) Enregistrer dans une autre collection

sdiffstore(dest, keys, *args)

InkeysEnsemble, Les éléments qui ne sont pas dans d'autres collections sont enregistrés dans destEnsemble

  • dest:Nouvelle collection, Nouvelle collection de paramètres , L'ancienne collection sera écrasée

Valeur de retour:int Renvoie le nombre d'actions

v = redis_conn.sdiffstore('Left', 'Zarten', 'Fruit')

49.Set sinter Renvoie l'intersection d'une collection avec une autre

sinter(keys, *args)

Valeur de retour:setType

v = redis_conn.sinter('Zarten', 'Fruit')

50.Set sinterstore Renvoie l'intersection d'une collection avec une autre , Et sauvegardé dans une autre collection

sinterstore(dest, keys, *args)

  • dest:Une autre Collection, Définir une nouvelle collection , Les anciens éléments de collection sont écrasés

v = redis_conn.sinterstore('Left', 'Zarten', 'Fruit')

51.Set sunion Renvoie l'Union d'une collection à une autre

sunion(keys, *args)

v = redis_conn.sunion('Zarten', 'Fruit')

52.Set sunionstore Renvoie l'Union d'une collection à une autre , Et sauvegardé dans une autre collection

sunionstore(dest, keys, *args)

  • dest:Une autre Collection, Définir une nouvelle collection , Les anciens éléments de collection sont écrasés

Valeur de retour: Nombre de nouveaux éléments de collection

v = redis_conn.sunionstore('Left', 'Zarten', 'Fruit')

Zset Rassemblement ordonné

L'ensemble ordonné a plus d'un champ fractionné que l'ensemble , Les fractions peuvent être classées par ordre croissant ou décroissant

53.Zset zadd Ajouter des éléments à une collection ordonnée

zadd(name, *args, **kwargs)

Pour ajouter un élément, spécifiez le score de l'élément

Valeur de retour: Renvoie le nombre ajouté

2Voici comment:

v = redis_conn.zadd('Zarten', 'a', 3, 'b', 4)#v = redis_conn.zadd('Zarten', c= 5, d= 6)

54.Zset zcard Renvoie le nombre d'éléments dans une collection ordonnée

zcard(name)

v = redis_conn.zcard('Zarten')

55.Zset zcount Renvoie le nombre d'éléments dans la plage de fractions d'un ensemble ordonné

zcount(name, min, max)

Contientmin max

Valeur de retour:Nombre int

v = redis_conn.zcount('Zarten', 3, 5)

56.Zset zscore Renvoie la fraction d'une valeur spécifiée dans un ensemble ordonné

zscore(name, value)

Valeur de retour:float Score de type;Shadow!: -5.0 <class 'float'>

v = redis_conn.zscore('Zarten', 'zhi')

57.Zset zincrby Augmenter la fraction d'une valeur dans un ensemble ordonné

zincrby(name, value, amount=1)

  • value:S'il existe, Ajouter amountPoints;S'il n'existe pas, Ajouter une nouvelle valeur et le score correspondant

  • amount:Valeur ajoutée,Peut être négatif

Valeur de retour: Score augmenté floatType ;Shadow!: -5.0 <class 'float'>

v = redis_conn.zincrby('Zarten', 'zhi', -5)

58.Zset zrem Supprimer une ou plusieurs valeurs d'une collection ordonnée

zrem(name, *values)

Valeur de retour:Renvoie le nombre de suppressions

v = redis_conn.zrem('Zarten', 'zhi', 'a')

59.Zset zremrangebyrank Supprimer les éléments de collection ordonnés par plage de tri

zremrangebyrank(name, min, max)

Valeur de retour:Nombre de suppressions int

v = redis_conn.zremrangebyrank('Zarten', 1, 3)

Après suppression, voir la figure ci - dessous :

60.Zset zremrangebyscore Supprimer l'ensemble ordonné en fonction de la plage de scores

zremrangebyscore(name, min, max)

Valeur de retour:Nombre de suppressions int

v = redis_conn.zremrangebyscore('Zarten', 8, 15)

61.Zset zrank Renvoie le classement d'une valeur dans un ensemble ordonné (De petit en grand) zrevrank(Du grand au petit)

zrank(name, value)

Valeur de retour:valueInname Valeur de classement des points dans , Les scores vont du plus petit au plus grand ,De0C'est parti.

v = redis_conn.zrank('Zarten', 'b')

Les valeurs retournées sont les suivantes :

62.Zset zrange Renvoie un segment de données triées par fractions dans un ensemble ordonné

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

  • name:redisDename

  • start: Position de départ causée par un câble de collecte ordonné ( Non fractionné )

  • end: Index des collections ordonnées position de fin ( Non fractionné )

  • desc:Collation,Par défaut, les scores sont triés du plus petit au plus grand

  • withscores: Est - ce que le score de l'élément est obtenu , Par défaut, seule la valeur de l'élément est obtenue

  • score_cast_func: Fonction de conversion des données pour les fractions

Valeur de retour:listType [(b'tt', 10.0), (b'd', 6.0), (b'c', 5.0)] <class 'list'>

v = redis_conn.zrange('Zarten', 1, 3, True, True, score_cast_func=float)

Les résultats sont présentés dans la figure:

Bitmap Bitmap

bitmap Bits dans lesquels les binaires sont stockés 0Et1, Groupes de chiffres similaires . Les applications typiques sont basées sur redisLe filtre blon de.

DeStringStructure des données de chaîne,Okbit La cartographie est limitée à 512 MB À l'intérieur(2^32)

63.Bitmap setbit Définir la valeur du bitmap

setbit(name, offset, value)

  • name:redisNom de la clé

  • offset:Offset,Supérieur ou égal à0. Quand le décalage s'étire ,Position vide à0Remplissage

  • value:Valeur binaire 0Ou1

v = redis_conn.setbit('Zarten_2', 100, 1)

64.Bitmap getbit Renvoie la valeur du décalage spécifié par bitmap

getbit(name, offset)

Retour0Ou1

v = redis_conn.getbit('Zarten_2', 101)

65.Bitmap bitcount Renvoie le binaire dans le bitmap comme 1Nombre total de

bitcount(key, start=None, end=None)

start end Spécifiez les bits de début et de fin , Bitmap entier par défaut

v = redis_conn.bitcount('Zarten_2', 100, 1000)

Fonctions globales

Les fonctions globales s'appliquent à toutes les structures de données

66.Fonctions globales delete Supprimerredis Toutes les données d'une ou de plusieurs clés

delete(*names)

Valeur de retour:int Nombre de suppressions

v = redis_conn.delete('name', 'name_1')

67.Fonctions globales exists JugementredisY a - t - il une clé dans

exists(name)

Valeur de retour:ExisteTrue;Au contraireFalse

v = redis_conn.exists('name')

68.Fonctions globales rename Renommerredis Nom de la clé moyenne

rename(src, dst)

Valeur de retour:SuccèsTrue

v = redis_conn.rename('name_2', 'name_100')

69.Fonctions globales move Bougeredis Toutes les données d'une clé à une dbMoyenne

move(name, db)

Valeur de retour:SuccèsTrue

v = redis_conn.move('name_100', 12)

70.Fonctions globales randomkey Acquisition aléatoireredis Un nom clé dans

randomkey()

Valeur de retour:Shadow!: b'name_55'

v = redis_conn.randomkey()

71.Fonctions globales type Voirredis Un type de structure de données clé dans

type(name)

Valeur de retour:String(Format octet) Shadow!: b'hash'

  • none (keyN'existe pas)

  • string (String)

  • list (Liste)

  • set (Ensemble)

  • zset (Ensemble ordonné)

  • hash (Table de hachage)

v = redis_conn.type('name_4')

Ici,Je crois que tout le monde a raison“Comment utiliserPythonFonctionnementRedisBase de données”Avec une meilleure compréhension,Autant le faire.!Voici le site Web du nuage à 100 millions de vitesses,Plus de contenu pertinent peut être interrogé dans les canaux pertinents,Suivez - nous,Continuer à apprendre!


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved