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来存储。以键值对的方式存储。
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, 要追加的字符串
网友评论