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, 要追加的字符串