set key value setnx key value set key value ex seconds get key mset key1 value1 key2 value2 mget key1 key2 key3 stren key # 数字操作 incr key decr key
扩展命令
1 2 3 4 5
append key value setrange key index value getrange key start stop incrby key step decrby key step
常用命令
set | get命令
作用: 设置键值,获取键对应的值
命令格式: set key value get key
1 2 3 4 5 6 7 8 9 10 11 12 13
tarena@tedu:~$ redis-cli -h 127.0.0.1 -p 6379 -a 123456 127.0.0.1:6379> set name 'Lucy' OK 127.0.0.1:6379> get name "Lucy" 127.0.0.1:6379> set number 10 OK 127.0.0.1:6379> get number "10" 127.0.0.1:6379> set number 6.66 OK 127.0.0.1:6379> get number "6.66"
set命令之 - setnx
setnx key value : 键不存在时才能进行设置(必须掌握)
1 2 3 4
# 键不存在,进行设置(此处name键已经存在) 127.0.0.1:6379> setnx name 'Tom' (nil) 127.0.0.1:6379>
set命令之 - ex
作用: 设置过期时间
命令格式: set key value ex seconds
1 2 3 4 5 6 7 8
127.0.0.1:6379> set name 'Tiechui' ex 3 OK 127.0.0.1:6379> get name "Tiechui" # 3秒后再次获取,得到 nil 127.0.0.1:6379> get name (nil) 127.0.0.1:6379>
127.0.0.1:6379> set message 'hello ' OK 127.0.0.1:6379> append message 'world' (integer) 11 127.0.0.1:6379> get message "hello world" 127.0.0.1:6379>
整数操作
INCRBY key 步长
DECRBY key 步长
1 2 3 4 5 6 7 8 9 10 11 12
127.0.0.1:6379> set number 10 OK 127.0.0.1:6379> get number "10" 127.0.0.1:6379> INCRBY number 5 (integer) 15 127.0.0.1:6379> get number "15" 127.0.0.1:6379> DECRBY number 5 (integer) 5 127.0.0.1:6379> get number "5"
INCR key : +1操作
DECR key : -1操作
1 2 3 4 5 6 7
127.0.0.1:6379> incr number (integer) 7 127.0.0.1:6379> decr number (integer) 6 127.0.0.1:6379> get number "6" 127.0.0.1:6379>
应用场景
抖音上有人关注你了,是不是可以用INCR呢,如果取消关注了是不是可以用DECR
浮点数操作
incrbyfloat key step
1 2 3 4 5 6 7 8
127.0.0.1:6379> get number "10" 127.0.0.1:6379> INCRBYFLOAT number 6.66 "12.66" 127.0.0.1:6379> INCRBYFLOAT number -6.66 "6" 127.0.0.1:6379> # 先转为数字类型,然后再进行相加减,不能使用append
命令汇总
字符串操作
1 2 3 4 5 6 7
1、set key value 2、setnx key value 3、get key 3、mset 4、mget 5、set key value ex seconds 6、strlen key
# 默认扩展位以0填充 127.0.0.1:6379> set mykey ab OK 127.0.0.1:6379> get mykey "ab" 127.0.0.1:6379> SETBIT mykey 01 (integer) 0 127.0.0.1:6379> get mykey "\xe1b" 127.0.0.1:6379>
r = redis.Redis(host='192.168.43.49',port=6379,db=2,password='123456')
# user1,一年之中第1天和第5天登录 r.setbit('user001',1,1) r.setbit('user001',5,1) # user2,一年之中第100天和第200天登录 r.setbit('user002',100,1) r.setbit('user002',200,1) # user3,一年之中好多天登录 for i inrange(0,365,2): r.setbit('user003',i,1) # user4,一年之中好多天登录 for i inrange(0,365,3): r.setbit('user004',i,1)
for user in user_list: # 统计位图中有多少个 1 login_count = r.bitcount(user) if login_count >= 100: active_users.append((user,login_count)) else: noactive_user.append((user,login_count))
# 打印活跃用户 for active in active_users: print('活跃用户:',active)