Python-Redis的String操作
Ubuntu安装Redis
sch01ar@ubuntu:~$ sudo apt install redis-server sch01ar@ubuntu:~$ redis-server sch01ar@ubuntu:~$ redis-cli
get(key):获取key中的值
127.0.0.1:6379> set name john OK 127.0.0.1:6379> get name "john"
keys *:获取全部的key
127.0.0.1:6379> keys * 1) "name_1" 2) "n1" 3) "n2" 4) "name"
del(key):删除指定的key
127.0.0.1:6379> keys * 1) "name_1" 2) "n1" 3) "n2" 4) "name" 127.0.0.1:6379> del name_1 (integer) 1 127.0.0.1:6379> keys * 1) "n1" 2) "n2" 3) "name"
set(key, value, ex=None, px=None, nx=False, xx=False):设置值,不存在则创建,存在则覆盖
ex为值的过期时间,单位为秒
px为值的过期时间,单位为毫秒
nx如果设置为True的话,则只有key不存在的时候,当前的set操作才执行
xx如果设置为True的话,则只有key存在的时候才执行当前的set操作
127.0.0.1:6379> set name john OK 127.0.0.1:6379> get name # 获取name中的值 "john" 127.0.0.1:6379> set name jack OK 127.0.0.1:6379> get name # 覆盖了原先的值 "jack" 127.0.0.1:6379> set age 22 ex 2 # 使age中的值存活2秒 OK 127.0.0.1:6379> get age "22" 127.0.0.1:6379> get age (nil) # 过了时间就查不到值了 127.0.0.1:6379> set age 22 px 2000 # 使age中的值存活2000毫秒 OK 127.0.0.1:6379> get age "22" 127.0.0.1:6379> get age (nil) # 过了时间就查不到值了 127.0.0.1:6379> set name jack nx # 因为name存在,所以set操作执行失败 (nil) 127.0.0.1:6379> set name_1 jack nx # 因为name_1不存在,所以set操作执行成功 OK 127.0.0.1:6379> set name john xx # 因为name存在,所以set操作执行成功 OK 127.0.0.1:6379> set name_1 john nx # 因为name_1不存在,所以set操作执行失败 (nil)
setex(key, value, time)
设置值,time为过期时间(数字秒 或 timedelta对象)
setnx(key, value)
设置值,只有key不存在的时候,才执行set设置操作
psetex(name, time_ms, value)
设置值,time_ms为过期时间(数字毫秒 或 timedelta对象)
mset(*args, **kwargs):批量设置值
127.0.0.1:6379> mset n1 php n2 asp OK 127.0.0.1:6379> get n1 "php" 127.0.0.1:6379> get n2 "asp"
mget(*args, **kwargs):批量获取值
127.0.0.1:6379> mget n1 n2 1) "php" 2) "asp"
getset(key, value):获取原来的值并设置新值
127.0.0.1:6379> get name "john" 127.0.0.1:6379> getset name jack "john" 127.0.0.1:6379> get name "jack"
getrange(key, start, end):获取子序列(根据字节获取,非字符)
start为起始位置(字节),end为结束位置(字节),一个汉字为3个字节
127.0.0.1:6379> get name "jack" 127.0.0.1:6379> getrange name 1 3 "ack"
setrange(key, offset, value):修改字符串内容,从指定字符串索引开始向后替换,如果新值太长时,则向后添加
offset为字符串的索引,字节(一个汉字三个字节),value为要设置的值
127.0.0.1:6379> get name "jack" 127.0.0.1:6379> setrange name 1 f (integer) 4 127.0.0.1:6379> get name "jfck"
strlen(key):返回key中值的字节长度(一个汉字为3个字节)
127.0.0.1:6379> get name "jack" 127.0.0.1:6379> strlen name (integer) 4
append(key, value):在key中的值后面追加内容
value为要追加的字符串
127.0.0.1:6379> get name "jack" 127.0.0.1:6379> append name abcd (integer) 8 127.0.0.1:6379> get name "jackabcd"
incr(self, key, amount=1):自增key对应的值,当key不存在时,则创建key=amount,如果key存在就自增
amount为自增数(必须是整数)
127.0.0.1:6379> incr num (integer) 1 127.0.0.1:6379> incr num (integer) 2 127.0.0.1:6379> incr num (integer) 3 127.0.0.1:6379> incr num (integer) 4 127.0.0.1:6379> incr num (integer) 5
incrbyfloat(self, key, amount=1.0):自增key对应的值,当key不存在时,则创建key=amount,如果key存在就自增
amount为自增数(浮点型)
127.0.0.1:6379> incrbyfloat float 1.2 "1.2" 127.0.0.1:6379> incrbyfloat float 1.2 "2.4" 127.0.0.1:6379> incrbyfloat float 1.2 "3.6" 127.0.0.1:6379> incrbyfloat float 1.2 "4.8" 127.0.0.1:6379> incrbyfloat float 1.2 "6" 127.0.0.1:6379> incrbyfloat float 1.2 "7.2"
decr(self, name, amount=1):自减key对应的值,当key不存在时,则创建key=amount,如果key存在就自减
amount为自减数(整数)
127.0.0.1:6379> decr num (integer) 4 127.0.0.1:6379> decr num (integer) 3 127.0.0.1:6379> decr num (integer) 2 127.0.0.1:6379> decr num (integer) 1 127.0.0.1:6379> decr num (integer) 0 127.0.0.1:6379> decr num (integer) -1 127.0.0.1:6379> decr num (integer) -2
setbit(key, offset, value):对key中值的二进制的表示位进行操作
offset为位的索引(将值变换成二进制后再进行索引),value为设置的值,只能是 1 或 0
127.0.0.1:6379> get name "jack" # 对应的二进制为: # 01101010 01100001 01100011 01101011 # 把c改为a 127.0.0.1:6379> setbit name 22 0 (integer) 1 127.0.0.1:6379> get name "jaak"
getbit(key, offset):获取key对应的值的二进制表示中的某位的值(0或1)
127.0.0.1:6379> get name "jack" 127.0.0.1:6379> getbit name 22 (integer) 1
bitcount(key, start=None, end=None):获取key对应的值的二进制表示中 1 的个数
start为位起始位置,end为位结束位置
127.0.0.1:6379> get name "jack" 127.0.0.1:6379> bitcount name 2 10 (integer) 9