0.通用命令
del key # 删除key
exists key # check某个key是否存在
expire key # 为某个key设置过期时间
flushall # 清空redis中所有数据
1.string操作命令
set key value # 设置key,value;如果key已存在,则value会被覆盖
getset key value # 设置key,value: 1.如果当前key已存在,则返回被覆盖前的value 2.当前key不存在,则设置key,value并返回null
setex key seconds value # 设置key、value,有效期seconds秒;对于已经存在的key也可以执行该操作重置value并赋予expired time
incr key # key对应的value自增,如果key对应value不是整数返回错误,如果key不存在,将value设置为 1
decr key # key对应的value自减,如果key对应value不是整数返回错误, 可以是负数
setnx key value # 设置key、value,如果key存在则setnx失败,返回 0 (set key value nx等价)
mset key value key value # 批量设置key、value,jedis客户端需要以数组形式传递key,value...
mget key key # 批量获取key的值, jedis客户端返回value1,value2...数组
注redis中字符数据类型:
int:8 个字节的长整型
embstr:小于等于 39 个字节的字符串
raw:大于 39 个字节的字符串
2.hash操作命令
hset key field value # 设置key对应map中的一对field value
hget key field # 获取key对应field的value值
hdel key field # 当key对应的hashmap中fiedl为空时,这个key会被移除
hlen key # 计算key中field个数,不存在的key,返回0
hkeys key # 返回key中包含的所有field
hvals key # 返回key中map的所有value
hexists key field # 判断key是否存在field属性
3.list操作命令
rpush key [value...] # 从右边顺序插入
lpush key [value...] # 从左边顺序插入
lrange key start end # 从左到右查询list中下标从start到end的元素(包括end),索引下标从左到右是0到N,从右到左是-1到-N,lrange key 0 -1 表示查询所有元素, 并不会从list中删除查询出来的元素
lindex key index # 获取指定下标的元素
lset key index newValue # 修改list中指定下标的元素
llen key # 获取list的长度
lpop key # 从list左边弹出元素,弹出元素从list中移除
rpop key # 从list右边弹出元素,弹出元素从list中移除
lrem key count value # count<0 从右到左,删除最多count绝对值个等于value的元素;count = 0 删除所有等于value的元素;count>0 从左到右,删除最多count个等于value的元素
blpop [key...] timeout # 阻塞式的从左边弹出给定key(可以是多个)中的元素
brpop [key...] timeout # 阻塞式的从右边弹出给定key(可以是多个)中的元素
- 关于blpop的使用说明:
key可以是不存在的; timeout表示阻塞时间,单位是秒(s); 如果阻塞期间取到元素(可以是多个key中任意某个pop元素),直接返回元素而不会再继续遍历;如果所有list都取不到元素,则阻塞,等到timeout时间之后会释放; timeout = 0表示如果取不到元素,一直阻塞下去。 如果多个客户端对同一个key执行blpop操作,那么最先执行blpop命令的客户端可以先取到元素。 - 使用场景:
- 消息队列:使用lpush和brpop命令组合可以实现阻塞队列
- 队列:lpush + rpop
- 栈:lpush + lpop
4.Set操作命令
sadd key [element …] # 添加元素
srem ket [element …] #移除元素
scard key # 计算元素个数,时间复杂度O(1),不会遍历集合所有元素,直接使用Redis内部变量
sismember key element # 判断元素是否在Set中
srandmember key [count] # 从Set中随机返回count个元素,不指定count默认返回一个元素,不会移除元素
spop key # 从Set中随机弹出一个元素,移除弹出的元素
smembers key # 获取所有元素
sinter [key …] # 求多个Set的交集
sunion [key …] # 求多个Set的并集
sdiff [key …] # 求多个Set的差集,key1和key2的差集结果和key3再取差集以此类推
sinterstore destination [key …] # 将多个Set的交集保存到destination上
sunionstore destination [key …] # 将多个Set的并集保存到destination上
sdiffstore destination [key …] # 将多个Set的差集保存到destination上
- 使用场景:
Set类型提供了集合的交并差集运算,比较适合的场景是标签(tag)。
例如给用户添加标签就可以通过交集查出用户的共同标签;
给标签添加用户就可以通过交集查出有共同标签的用户。
5.Redis使用注意
- 1.Redis默认最大连接数10000,但是受限于linux系统的最大连接数,linux可以使用
ulimit -a
查看open files大小,具体修改linux最大连接数命令:
$ vim /etc/security/limits.conf # 新增如下字段
* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535
$ vim /etc/pam.d/login # 新增如下字段
session required pam_limits.so
# 重启服务器
- 2.慎用keys和flushall命令,这种命令在大数据量时执行很慢会导致雪崩效应
- 3.monitor命令会占用大量cpu,具体线程cpu使用量使用命令```top -Hp pid``查看
网友评论