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

Super detailed tutorial of Python operating redis database

編輯:Python

Catalog

Introduce

Common data structure

install

Connect

String character string ( Key value pair )

List list

Hash Hash

Set aggregate

Zset Ordered set

Bitmap Bitmap

Global function

summary

Introduce

Redis Is an open source, memory based and persistent Key-Value database , use ANSI C Language writing . It has a rich data structure , Have transaction function , Ensure the atomicity of the command . Because it's an in memory database , Reading and writing is very fast , Can be up to 10w/s Evaluation rate of , Therefore, it is generally applied to data that changes rapidly 、 Real time communication 、 Cache, etc . But memory database usually needs to consider the memory size of the machine .

Redis Yes 16 A logical database (db0-db15), Each logical database project is isolated , By default db0 database . If you choose the second 2 A database , Through the command select 2 ,python You can specify the database when connecting to .

Common data structure

String- character string

List- list

Hash- Hash

Set- aggregate

ZSet- Ordered set

Bitmap- Bitmap

python We use redis-py Library to operate Redis database , The following will focus on .

Premise : To be installed Redis database , If there is no installation point here

install pip3 install redis Connect

The first way : Ordinary

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

The second way : Connection pool

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

redis The return value types of Chinese characters are bytes (bytes) type

String character string ( Key value pair )

stay redis in , A key corresponds to a value

1.String set Set a single key value

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

ex: Expiration time ( second ), When it's time redis It will be deleted automatically

px: Expiration time ( millisecond ), When it's time redis It will be deleted automatically .ex、px One out of two

nx: If set to True, only name When there is no , At present set Operation before execution

xx: If set to True, only name In existence , At present set Operation before execution

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

2.String get Get a single value

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

3.String mset Set multiple key values

mset(*args, **kwargs)

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

perhaps

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

4.String mget Get multiple values

mget(keys, *args)

m = redis_conn.mget('name_1', 'name_2')#m = redis_conn.mget(['name_1', 'name_2']) It's OK print(m)

5.String getset Set new values for existing keys , And return the original value

getset(name, value)

When the given key does not exist , Will set its new value , But the return value is None

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

6.String setrange Modify a key according to the index value value

setrange(name, offset, value)

The return value is : Modified string length

name: key , Automatically add when the given does not exist

offset: Offset , With 0 Start

value: Modified character or string , String with offset Go backwards

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

7.String getrange Get the part of a key according to the index value value

If the given key does not exist , Returns a null value b''

getrange(key, start, end)

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

The result is :

8.String strlen obtain value The length of

strlen(name)

When the given key does not exist , The return value is 0

length = redis_conn.strlen('name_2')

9.String incr int Type of value Self increasing ( Self reduction )

Empathy : Self reduction ,decr(name, amount=1)

The value corresponding to the given key must be an integer or string value , Otherwise, it will report a mistake . The default auto increment is 1

incr(name, amount=1)

The return value is : Modified value ,int type

redis_conn.set('num_2', 2)#redis_conn.set('num_2', '2') Will do v = redis_conn.incr('num_2')

10.String incrbyfloat Floating point number type value Self increasing

incrbyfloat(name, amount=1.0)

The return value is : Floating point type float

v = redis_conn.incrbyfloat('num_2')

11.String append value Back up

append(key, value)

If given key does not exist , Then set a new value

The return value is the length of the modified string

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

The result is :

List list

stay redis in , A key corresponds to a list

12.List lpush Add values to the left of the list rpush( On the right )

lpush(name, *values)

value When there are multiple values , Add... To the left of the list from left to right , The types can be different

When the given key does not exist , Create a new list

Return value : The size of the list

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

13.List lpushx When the bond exists , Add to the left of the list rpushx( Far right )

lpushx(name, value)

When only keys exist , Just add . If the key does not exist, do not add , Or create a new list

The return value is : List size

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

14.List llen Get the list size of the given key

llen(name)

v = redis_conn.llen('Zarten')

15.List linsert Insert a new value in the middle of the list

linsert(name, where, refvalue, value)

name: Key name

where: Location , front (BEFORE) Or behind (AFTER)

refvalue: Specify which value to insert before and after

value: Insert new value

Return value : The length of the list after insertion , If returns -1, be refvalue non-existent

Data before insertion :

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

The inserted data :

16.List lset The list is assigned by index

lset(name, index, value)

Return value : success True otherwise False

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

17.List lindex Get list values by index

lindex(name, index)

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

18.List lrange Get a piece of data from the list

lrange(name, start, end)

Return value :List A piece of data of type

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

19.List lpop Delete the first value on the left rpop( On the right )

lpop(name)

Return value : The value of the deleted element

v = redis_conn.rpop('Zarten')

20.List lrem Delete... From the list N Two identical values

lrem(name, value, num=0)

name: Key name

value: Values to be deleted

num: Number of deletions An integer indicates left to right Negative numbers indicate right to left for example :2 -2

Return value : Return the number of deletions

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

21.List ltrim Delete all values outside the range in the list

ltrim(name, start, end)

Return value : success True

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

22.List blpop Delete and return the leftmost value in the list brpop( Far right )

blpop(keys, timeout=0)

keys: Given key

timeout: Waiting timeout , The default is 0, To wait for

Return value :tuple type Form like : ( Key name , Deleted values ) (b'Zarten', b'hehe')

v = redis_conn.blpop('Zarten')

23.List rpoplpush The rightmost value in one list is taken out and added to the leftmost value in another list brpoplpush Blocking version

rpoplpush(src, dst)

brpoplpush(src, dst, timeout=0) by rpoplpush Blocking version of ,timeout by 0 when , Always block

Return value : Extracted element value

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

It is internally stored as key value pairs

24.Hash hset Add a key value pair to the hash

hset(name, key, value)

key There is , The modified , Otherwise, add

Return value : Return the number of successful additions int

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

25.Hash hmset Set multiple key value pairs in the hash

hmset(name, mapping)

mapping:dict type

Return value : success True

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

26.Hash hmget Get multiple key value pairs in the hash

hmget(name, keys, *args)

Return value : List of values list Form like : [b'1', b'123'] <class 'list'>

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

27.Hash hget Get specified key Value

hget(name, key)

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

28.Hash hgetall Get all key value pairs in the hash

hgetall(name)

Return value :dict type

v = redis_conn.hgetall('Zarten')

29.Hash hlen Get the number of key value pairs in the hash

hlen(name)

v = redis_conn.hlen('Zarten')

30.Hash hkeys Get all the keys in the hash key

hkeys(name)

Return value :list type

v = redis_conn.hkeys('Zarten')

31.Hash hvals Get all the values in the hash value

hvals(name)

Return value :list type

v = redis_conn.hvals('Zarten')

32.Hash hexists Check if there is a key in the hash key

hexists(name, key)

Return value : Yes True ; otherwise False

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

33.Hash hdel Delete key value pairs in hash (key-value)

hdel(self, name, *keys)

Return value :int Number of deletions

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

34.Hash hincrby Auto incrementing hash key Corresponding value value ( Must be integer numeric type )

hincrby(name, key, amount=1)

If given key Create if it does not exist ,amount Default increase 1, Can be negative

Return value :int Increased value

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

35.Hash hincrbyfloat Self-incremented floating point number ditto hincrby

hincrbyfloat(name, key, amount=1.0)

36.Hash expire Set the expiration time of the entire key

expire(name, time)

time: second , Time is up. , Automatically delete immediately

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

37.Hash hscan Incrementally iterate to get the data in the hash

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

name:redis Of name

cursor: The cursor ( Fetch data in batches based on cursors )

match: Matching the specified key, Default None Represents all key

count: Minimum number of slices per slice , Default None Said the Redis The default number of slices

Return value :tuple type ;( Scanning position , all dict data )

v = redis_conn.hscan('Zarten')

38.Hash hscan_iter return hscan The generator

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

Refer to the above function hscan

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

Set aggregate

The elements in the set do not repeat , Generally used to filter elements

39.Set sadd Add elements to the collection

sadd(name, *values)

If you insert an existing element , Will not be inserted automatically

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

40.Set scard Returns the number of elements in the collection

scard(name)

v = redis_conn.scard('Zarten')

41.Set smembers Get all the elements in the collection

smembers(name)

Return value :set type , Form like : {b'a', b'apple', b'c', b'b'}

v = redis_conn.smembers('Zarten')

42.Set srandmember Get one or at random N Elements

srandmember(name, number=None)

name: Key name

number: One or more N individual , The default is to return a . If returns N individual , Then return to List type

Return value : Return a value or a list

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

43.Set sismember Determine whether a value is in the set

sismember(name, value)

Return value :True stay False be not in

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

44.Set spop Randomly delete and return the elements in the collection

spop(name)

v = redis_conn.spop('Zarten')

45.Set srem Delete one or more elements in the collection

srem(name, *values)

Return value : Return the number of deletions int

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

46.Set smove Move values from one set to another

smove(src, dst, value)

if value When there is no , return False

Return value : success True

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

47.Set sdiff Returns all elements in one collection but not in other collections ( Difference set )

sdiff(keys, *args)

stay keys Collection , Elements that are not in other collections

Return value :set type {b'2', b'4', b'3', b'1'}

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

48.Set sdiffstore above sdiff The return value of ( Difference set ) Save in another collection

sdiffstore(dest, keys, *args)

stay keys Collection , Elements that are not in other collections are saved in dest Collection

dest: New collection , New set of settings , The old collection will be overwritten

Return value :int Returns the number of actions

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

49.Set sinter Returns the intersection of a set and other sets

sinter(keys, *args)

Return value :set type

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

50.Set sinterstore Returns the intersection of a set and other sets , And save it in another set

sinterstore(dest, keys, *args)

dest: Another collection , Set up a new set , The old collection elements will be overwritten

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

51.Set sunion Returns the union of a set and other sets

sunion(keys, *args)

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

52.Set sunionstore Returns the union of a set and other sets , And save it in another set

sunionstore(dest, keys, *args)

dest: Another collection , Set up a new set , The old collection elements will be overwritten

Return value : Number of new collection elements

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

An ordered set has one more fractional field than a set , Fractions can be sorted in ascending and descending order

53.Zset zadd Add elements to an ordered set

zadd(name, *args, **kwargs)

When adding an element, you need to specify the score of the element

Return value : Returns the number of additions

2 The ways are as follows :

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

54.Zset zcard Returns the number of elements in an ordered collection

zcard(name)

v = redis_conn.zcard('Zarten')

55.Zset zcount Returns the number of elements within the fractional range in an ordered set

zcount(name, min, max)

contain min max

Return value : Number int

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

56.Zset zscore Returns the fraction of a specified value in an ordered set

zscore(name, value)

Return value :float Score of type ; Form like : -5.0 <class 'float'>

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

57.Zset zincrby Increase the score of a value in an ordered set

zincrby(name, value, amount=1)

value: If exist , Increase its amount fraction ; If it does not exist , Then add the new value and the corresponding score

amount: Increased value , Can be negative

Return value : Increased score float type ; Form like : -5.0 <class 'float'>

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

58.Zset zrem Delete one or more values in an ordered set

zrem(name, *values)

Return value : Return the number of deletions

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

59.Zset zremrangebyrank Delete the ordered collection elements according to the sorting range

zremrangebyrank(name, min, max)

Return value : Delete the number int

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

Delete it as shown in the figure below :

60.Zset zremrangebyscore Delete ordered set according to score range

zremrangebyscore(name, min, max)

Return value : Delete the number int

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

61.Zset zrank Returns the rank of a value in an ordered set ( From small to large ) zrevrank( From big to small )

zrank(name, value)

Return value :value stay name Score ranking value in , Rank the scores from small to large , from 0 Start

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

The return value is shown in the following figure :

62.Zset zrange Returns a piece of data sorted by the scores of an ordered set

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

name:redis Of name

start: An ordered collection index starting position ( The score )

end: End of index of ordered collection ( The score )

desc: Sort rule , By default, sort by score from small to large

withscores: Whether to get the score of the element , The default is to get only the values of the elements

score_cast_func: A function that converts data to scores

Return value :list type [(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)

The result is shown in Fig. :

Bitmap Bitmap

bitmap Bit in which binary is stored 0 and 1, Similar to digit group . Typical applications are based on redis The bloom filter .

Belong to String String data structure , solid bit The mapping is limited to 512 MB within (2^32)

63.Bitmap setbit Set the value of the bitmap

setbit(name, offset, value)

name:redis Key name

offset: Offset , Greater than or equal to 0. When offset stretches , Blank space to 0 fill

value: Binary value 0 or 1

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

64.Bitmap getbit Returns the value of the specified offset of the bitmap

getbit(name, offset)

return 0 or 1

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

65.Bitmap bitcount The binary in the returned bitmap is 1 Total number of

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

start end Specify the start and end bits , Default entire bitmap

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

Global functions apply to any data structure

66. Global function delete Delete redis All data for one or more keys in

delete(*names)

Return value :int Number of deletions

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

67. Global function exists Judge redis Is there a key in

exists(name)

Return value : There is True; conversely False

v = redis_conn.exists('name')

68. Global function rename rename redis Middle key name

rename(src, dst)

Return value : success True

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

69. Global function move Move redis All data of a key in a key to a key db in

move(name, db)

Return value : success True

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

70. Global function randomkey Random access redis A key name in

randomkey()

Return value : Form like : b'name_55'

v = redis_conn.randomkey()

71. Global function type see redis A key data structure type in

type(name)

Return value : character string ( Byte form ) Form like : b'hash'

none (key non-existent )

string ( character string )

list ( list )

set ( aggregate )

zset ( Ordered set )

hash ( Hashtable )

v = redis_conn.type('name_4') summary

This is about Python operation Redis That's all for the database article , More about Python operation Redis Please search the previous articles of software development network or continue to browse the relevant articles below. I hope you will support software development network more in the future !



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