Redis的两种连接方式

1.简单连接

import redis
conn = redis.Redis(host='207.148.120.229', port=6379)
conn.set('foo', 'Bar')
print(conn.get('foo'))
a = input('按任意键结束')

2.使用连接池

为了减少每次建立、释放连接的开销,推荐使用连接池

redis使用connection pool来管理对一个redis服务的所有连接。

多个redis实例可共享一个连接池。

import redis
pool = redis.ConnectionPool(host='207.148.120.229',port=6379)
conn = redis.Redis(connection_pool=pool)
 
conn.set('key', 'Hello World')
print(conn.get('key'))
a = input('按任意键结束')

五大数据类型
1.String操作 
redis中的String在在内存中按照一个key对应一个value来存储。以键值对的方式存储。


Redis的两种连接方式_第1张图片
image.png

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

在Redis中设置值,默认,不存在则创建,存在则修改
参数:
     ex,过期时间(秒)
     px,过期时间(毫秒)
     nx,如果设置为True,则只有name不存在时,当前set操作才执行
     xx,如果设置为True,则只有name存在时,当前set操作才执行
 
import redis
pool = redis.ConnectionPool(host='207.148.120.229',port=6379)
conn = redis.Redis(connection_pool=pool)
 
conn.set('key', 'Hello World')
print(conn.get('key'))

mset(*args, **kwargs) 批量设置值”

# 批量设置值
import redis
pool = redis.ConnectionPool(host='207.148.120.229',port=6379)
conn = redis.Redis(connection_pool=pool)

conn.mset(k1='v1', k2='v2')
# conn.mset({'k1': 'v1', 'k2': 'v2'})

print(conn.get('k1'))

get(name) 获取值

print(conn.get('k1'))

mget(keys, *args) 批量获取值

# 批量获取值
import redis
pool = redis.ConnectionPool(host='207.148.120.229',port=6379)
conn = redis.Redis(connection_pool=pool)

conn.mset(k1='v1', k2='v2')

print(conn.mget('k1','k2'))    # [b'v1', b'v2']
print(conn.mget(['k1','k2']))  # [b'v1', b'v2']

getset(name, value) 设置新值并获取原来的值

import redis
pool = redis.ConnectionPool(host='207.148.120.229',port=6379)
conn = redis.Redis(connection_pool=pool)

conn.mset(k1='v1', k2='v2')

ret = conn.getset('k1','value_1')
print(ret)             # b'v1'
print(conn.get('k1')) # b'value_1'

getrange(key, start, end) 获取name对应value的指定字节

import redis
pool = redis.ConnectionPool(host='207.148.120.229',port=6379)
conn = redis.Redis(connection_pool=pool)

conn.set('k1','hello')

print(conn.getrange('k1',0,3)) # b'hell''
# 获取子序列(根据字节获取,非字符)
# 参数:
    # name,Redis 的 name
    # start,起始位置(字节)
    # end,结束位置(字节)
# 如: "hello" ,0-3表示 "hell"

setrange(name, offset, value) 从指定字节开始替换新值

import redis
pool = redis.ConnectionPool(host='207.148.120.229',port=6379)
conn = redis.Redis(connection_pool=pool)

print(conn.get('k1'))  # b'hello'
conn.setrange('k1',2,'long_time')
print(conn.get('k1'))  # b'helong_time'

# 修改字符串内容,从指定字符串索引开始向后替换(新值太长时,则向后添加)
# 参数:
    # offset,字符串的索引,字节(一个汉字三个字节)
    # value,要设置的值

strlen(name) 获取name对应的value的长度

import redis
pool = redis.ConnectionPool(host='207.148.120.229',port=6379)
conn = redis.Redis(connection_pool=pool)

conn.set('k1','hello')
conn.set('k2','天宝')

print(conn.strlen('k1'))  # 5
print(conn.strlen('k2'))  # 6  一个汉字占3个字节

incr(self, name, amount=1) name存在,则自增amount,否则设置name的value值为amount

import redis
pool = redis.ConnectionPool(host='207.148.120.229',port=6379)
conn = redis.Redis(connection_pool=pool)

conn.set('k1','5')
conn.incr('k1',amount=3)

print(conn.get('k1'))  # b'8'

# 自增 name对应的值,当name不存在时,则创建name=amount,否则,则自增。

# 参数:
# name,Redis的name
# amount,自增数(必须是整数)

# 注:同incrby

decr(self, name, amount=1) 自减(整数)

import redis
pool = redis.ConnectionPool(host='207.148.121.149',port=6379)
conn = redis.Redis(connection_pool=pool)

conn.set('k1','5')
conn.decr('k1',amount=3)

print(conn.get('k1'))  # b'2'

# 自减 name对应的值,当name不存在时,则创建name=amount,否则,则自减。

# 参数:
# name,Redis的name
# amount,自减数(整数)

append(key, value)

import redis
pool = redis.ConnectionPool(host='207.148.121.149',port=6379)
conn = redis.Redis(connection_pool=pool)

conn.set('k1','hello_')
conn.append('k1','world')

print(conn.get('k1'))  # b'hello_world'

# 在redis name对应的值后面追加内容

# 参数:
# key, redis的name
# value, 要追加的字符串

你可能感兴趣的:(Redis的两种连接方式)