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.!
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.
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
pip3 install redis
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
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::
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')
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)
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')
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 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)
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!