[TOC]
Redis常用命令帅哥专供版
- 没错这里说的帅哥指的就是我自己
Redis常用语法及设置帅哥专供版
常用命令
常用命令:
# 监控命令 monitor 该命令实时读取Redis的所有操作语句
# 该命令可在Redis客户端内,向一般命令一样直接执行,但是由于不能用grep等shell命令, 会直接打印所有的Redis操作
./redis-cli monitor | grep 'NOTIFY_EMAIL'
# 指定redis读取的配置文件
./redis-server ./redis.conf
# 提供host为localhost,端口为6380,redis服务的统计信息
redis-cli -h localhost -p 6380 info
# 监控host为localhost,端口为6380,redis的连接及读写操作 实时输出
# 该命令可在Redis客户端内,向一般命令一样直接执行,但是由于不能用grep等shell命令, 会直接打印所有的Redis操作
redis-cli -h localhost -p 6380 monitor
# 通过密码和指定端口和host进行登录
# 此时进入redis命令行后是没有任何权限的
# 进入redis后 输入 auth 按照提示输入密码即可
redi-cli -h host地址 -p 端口 -a 密码
# 批量删除指定库中匹配格式的Key
redis-cli -n 0 keys "*" | xargs redis-cli -n 0 del
# 如果要指定 Redis 数据库访问密码,使用下面的命令
redis-cli -a password keys "*" | xargs redis-cli -a password del
# 100个并发连接,100000个请求,检测host为localhost 端口为6379的redis服务器性能
redis-benchmark -h localhost -p 6379 -c 100 -n 100000
添加redis登录密码
配置文件:
#requirepass foobared 修改foobared为任意密码
重启redis-server
sudo service redis stop
sudo redis-server /etc/redis.conf
之后依然可以使用reids-cli登录redis,但是不能做任何的操作,
redis-cli -h 127.0.0.1 -p 6379
尝试使用密码进行登录
redis-cli -h 127.0.0.1 -p 6379 -a myRedis
通过redis命令行进行配置(临时性):
config set requirepass my_redis (可以用来修改密码)
查看通过命令行设置的密码
config get requirepass
无需重启redis即可生效
这时候用原来的密码发现已经不行了.但是重启redis后,命令行密码即可失效.
除了在登录时通过 -a 参数制定密码外,还可以登录时不指定密码,而在执行操作前进行认证。
redis-cli -h 127.0.0.1 -p 6379
auth 输入密码
登录成功
master配置了密码,slave如何配置
若master配置了密码则slave也要配置相应的密码参数否则无法进行正常复制的。
slave中配置文件内找到如下行,移除注释,修改密码即可
#masterauth mstpassword
memcache最大支持1m
redis单个val最大1g支持主从配置
注释: 设置redis默认从后台启动
可以通过后台设置选择后台启动daemonize yes设置完毕后需要重读配置文件,如:./redis-server ./redis.conf
1.Keys操作:
exists key 测试指定 key是否存在
del key1 key2 .... 删除给定Kye
type key 返回指丁Key的value类型
keys pattern 返回匹配指定模式的所有 kye, keys * 为所有
rename oldkey newkey 改名字
dbsize 返回当前数据库的key数量
expire key seconds 为key指定过期时间
ttl key 返回key的剩余过期秒数
select db-index 选择数据库
move key db-index 将Key从当前数据库移动到指定数据库
flushdb 删除当前数据库中所有key
flushall 删除所有数据库中所有的key
swapdb db1 db2 互换数据库db1和db2
info 可以看到redis当前运行情况, info下列表信息的也都可以直接调用.
如:
info Clients 查看连接的客户端数量
info Persistence RDB 和 AOF 的相关信息
info Memory 查看内存使用情况
info Stats 一般统计信息
info Replication 主从信息,master上显示的信息
info CPU CPU计算量统计信息
info Cluster 集群相关信息
info keyspace 查看所有库中的key的数量
info all 返回所有信息
info default 返回默认选择的信息
...........巴拉巴拉...还有很多具体可以命令行中直接通过 info 命令查看.
2.string类型操作:
string是redis最基本的类型
redis的string 可以包含任何数据,包裹JPG图片或者序列化的对象
单个value值最大上线是1G字节.
如果只用string类型,redis就可以被看做加上持久化的memcache
从 Redis 2.6.12 版本开始, SET 命令的行为可以通过一系列参数来修改:
EX second :设置键的过期时间为 second 秒。 SET key value EX second 效果等同于 SETEX key second value 。
PX millisecond :设置键的过期时间为 millisecond 毫秒。 SET key value PX millisecond 效果等同于 PSETEX key millisecond value 。
NX :只在键不存在时,才对键进行设置操作。 SET key value NX 效果等同于 SETNX key value 。
XX :只在键已经存在时,才对键进行设置操作。
例子: SET name liuhao EX 120 NX
set key value 设置key对应的值为string类型的value.
mset key1 value1 ... 一次设置多个Key的值.
mget key1 key2... 一次获取多个key的值.
incr key 对Key的值做+1操作,并返回新的值. 无Key创建key
decr key 对key的值做-1操作,并返回新的值.
incrby key integer 对Key的值+任意数字, 并返回新的值.
decrby key integer 对Key的值-任意数字,并返回新的值.
append key value 给指定key的支付穿值追加value.
substr key start end 返回截取过的key的字符串值, 序列自0开始.
2.list类型操作
list列表是简单的字符串列表.
list类型其实就是一个双向链表,通过Push,POP操作从链表的头部或者尾部添加删除元素,
这使得list即可以用作栈,可以用作队列.
同一个口子进出叫做栈, 一头进一头出叫做队列.
在使用过程中,主要用来做队列.
lpush key string 在Key对应list的头部添加字符串元素,返回当前长度.
rpop key 从list的尾部删除元素,并返回删除元素.
llen key 返回key 对应list的长度,key不存在返回0,如果key对应类型不是list 则返回错误.
lrange key start end 返回指定区间内的元素,下标从0开始.
rpush key string 在Key对应list的尾部添加字符串元素.
lpop key 从list的头部删除元素,并返回元素.
ltrim key start end 截取list, 保留指定区间内的元素,其他部分删除.
3.set类型操作
redis的set是string类型的无需集合.
set元素最大可以包含(2的32次方-1)个元素.
关于set集合类型除了基本的添加删除操作,其他有用的操作海包含集合的取并集,交集,差集,
通过这些操作,很容易的实现sns中的好友推荐功能.
注意: 每个集合中的各个元素不能重复.
在使用过程中, 主要用来判断两个无需集合中的Key中的value的交集,并集,差集
sadd key member... 添加一个string元素到可以对应的set集合中成功返回1.如果元素已经存在集合中,返回0,key对应的set不存在则返回错误.
srem key member[member] 从Key对应set中移除给定元素,成功返回1.
smove p1 p2 member 从p1对应set中移除member并添加到p2对应的set中
scard key 返回set的元素个数
sismember key member 判断member是否在set中
sinter key1 key2..... 返回所有给定key的交集 交集: key1和key2中都有的部分
sunion key1 key2... 返回所有给定key的并集 并集: key1和ke2的集合(重复部分,只取一个)
sdiff key1 key2... 返回所有给定key的差集 差集:key1和key2不相交的部分
smembers key 返回key对应set 的所有元素, 结果是无序的
spop key 移除并返回集合中的一个随机元素
4.SortSet 有序集合
和set一样,sortset 也是string类型元素的集合
不同的是每个元素都睡管理一个权重
通过权重值可以有序的获取集合中的元素.
在使用过程中, 主要可以用来在排序使用.
zadd key score member 添加元素到集合,元素在集合中存在则更新对应score
zrem key member 删除指定元素 1表示成功, 如果元素不存在返回0
zincrby key incr member 按照incr幅度增加对应member的score值返回score值
zrank key member 返回指定元素在集合中的排名(下标), 集合中元素是按照score从小到大排序的.
zrevrank key member 同上,但是集合中元素是按照score从大到小排序的.
zrange key start end 类似lrange 操作从集合中去指定区间的元素,返回的是有序结果.
zrevrange key start end 同上返回结果是按照score逆序的.
zcard key 返回集合中元素的个数
zscore key element 返回给定元素对应的score
zremrangebyrank key min max 删除集合中排名在给定区间的元素.
5.Hash数据类型
hash数据类型存储的数据与MySQL数据库中存储的一条记录极为相似.
hset key field value 设置hash field为指定值, 如果key不存在,则创建
hget key field 获取指定的hash的field
hmget key field1 field2 获取多个指定的hash field
hmset key field vlaue1 value2 同时设置hash多个field
hincrby key field integer 将指定的hash field 加上给定值
hexists key field 测试指定的field是否存在
hdel key field 删除指定的hash field
hlen key 返回指定hash的field数量
hkeys key 指定hash的所有field
hvals key 返回hash的所有values
hgetall key 发挥hash的所有field和values
持久化操作
持久化操作:
redis为了内部数据到嗯安全考虑, 会吧本身数据以文件形式保存到硬盘中一份,在服务器重启之后会自定把硬盘中的数据回复到内存的里面.数据保存到硬盘灯嗯过程就被称为'持久化'效果.
1. snap shotting 快照持久化也叫做RDB持久化:
该持久化默认开启,一次性把redis中全部数据,保存一份存储在硬盘中,如果数据非常多(10G-20G)就不适合频繁该持久化操作.
redis中数据备份文件默认为的dump.rdb.
RDB的数据dump.rdb(默认文件名)可以直接复制出来给另外一个redis-server使用,但是低版本不可以读取高版本
配置文件中redis.conf中:
快照持久化的备份频率:
save 900 1 当900秒内有超过1个Key通过修改的话, 就发起一次快照保存.
save 3000 10 当300秒内有超过10个Key被修改,发起一次快照保存.
save 60 10000 当60秒内超过10000个key修改的话, 发起一次快照保存.
以上三个save的意思:
数据修改的频率搞,备份的频率也高.
数据修改的频率低,备份的频率也低.
理解案例:
假如 :没间隔一个小时做一次持久化.
8:00 快照
间隔时间断电的话,可能会造成数据丢失,所以在这个时间段可以采用:
精细持久化, 把修改的每个key都保存起来,并且频率可以达到(秒级).
9:00 快照
精细持久化
10:00 快照
精细持久化
11:00 快照
精细持久化
12:00 快照
精细持久化
.......... 快照
dbfilename dump.rdb 快照持久化保存的文件名
dir ./ 所有持久化保存的路径
手动发起持久化:
redis持久化相关命令:
bgsave 异步保存数据到磁盘(快照保存)
lastsave 返回上次成功保存到磁盘的Unix时间戳
shutdown 同步保存到服务器并关闭redis服务器
bgrewriteaof 当日志文件过长时优化AOF日志文件存储
./redis-cli bgrewriteaof
./redis-cli bgsave
# 手动发起快照到目标地址
./redis-cli -h 127.0.0.1 -p 6379 bgsave 如果要保存在本地可以省略IP和端口 ./redis-cli bgsave
2.append only file (AOF 持久化)也叫精细持久化 和快照持久化是一种互补的关系.
本质: 把用户执行的每个写指令(添加,修改,删除)都备份到文件中,还原数据的时候,就是执行具体指令而已.
默认没有开启AOF持久化;
开启AOF持久化(会清空redis内部的数据):
打开配置文件redis.conf :
appendonly no 默认没有开启
修改为yes 为开启.
appendfilename appendonly.aof 设置AOF持久化保存的名字
配置文件被修改,需要重启redis服务:
1. 杀死进程
2. ./redis-server ./redis.conf 使用该命令读取配置文件,同时启动服务
新的进程启动好之后, 会在目录中看到appendonly.aof的AOF持久化的备份文件
AOF持久化的追加备份频率:
配置文件中设置AOF持久化设置:
appendfsync no 对比当前服务器性能比较宽裕就进行备份,完全依赖OS,持久化没保障.不推荐
appendfsync erveysec 每秒钟备份一次(在性能和持久化方面做了很好的折中): 推荐使用 [默认]
appendfsync always 只要有写指令就写进行备份数据(最慢, 性能差,但是保证完整的持久化)不推荐
AOF持久化备份后,文件会特别大,例如,incr num num这个文件会特别的打,通过查看得知incr num10次以后,会在备份文件中,生成多次的自增, 而此时实际上直接可以使用set num 10就可以.这时候使用./redis-cli bgrewriteaof 优化备份文件中的数据格式. 此时查看appendonli.aof 之前通过incr num多次的数据,变成了set num 10;
主从模式
3. 主从模式
配置文件中:
slaveof <masterip><masterport> 修改为 slaveof IP port 设置从服务器追踪到哪个主服务器.默认从服务器不可以用来写入;
此时的从服务器只可以用来读取,不能写入. 如果想要写入需要修改配置文件:
slave-read-only yes 修改为no
master配置了密码,slave如何配置
若master配置了密码则slave也要配置相应的密码参数否则无法进行正常复制的。
slave中配置文件内找到如下行,移除注释,修改密码即可
#masterauth mstpassword
数据备份与回复
数据备份与回复:
数据备份:
1.在 redis-cli 中使用 save 命令,同步备份所有数据到dump.rdb 中,以RDB文件的形式保存到硬盘.
2.使用config get dir 获取本分目录
注释:
一般来说,生产环境很少使用 save, 因为他会阻塞所有的客户端.保存数据通常使用 bgsave.
Redis的数据类型
TTL
TTL:
TTL key
以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)。
当 key 不存在,或者 key 没有设置剩余生存时间时,命令都返回 -1 。
String 字符串类型
一个键最多存储512M
1> SET:设置key对应值为value
语法: SET key value
SET str1 'xdl'
从 Redis 2.6.12 版本开始, SET 命令的行为可以通过一系列参数来修改:
EX second :设置键的过期时间为 second 秒。 SET key value EX second 效果等同于 SETEX key second value 。
PX millisecond :设置键的过期时间为 millisecond 毫秒。 SET key value PX millisecond 效果等同于 PSETEX key millisecond value 。
NX :只在键不存在时,才对键进行设置操作。 SET key value NX 效果等同于 SETNX key value 。
XX :只在键已经存在时,才对键进行设置操作。
例子: SET name liuhao EX 120 NX
2>GET:根据KEY找到对应的值
语法: GET key
注意:如果key不存在 返回nil
3>GETRANGE:返回字符串中的一部分
语法: GETRANGE key start end
GETRANGE str1 0 1
GETRANGE str1 0 -1
GETRANGE str1 0 -2
GETRANGE str1 0 1000
4>GETSET:设置指定key的值,并返回旧值
语法: GETSET key value
SET str2 'itxdl'
GETSET str2 'xdl'
注意:当key不存在返回nil
5>MSET:一次设置多个键值对
语法:MSET key value [key value .......]
MSET str4 'xdl' str5 'itxdl' str6 'xdlo2o'
6>MSETNX:一次设置多个key-value对,只有所有的key都不存在的时候才会成功
语法: MSETNX key value [key value .....]
MSETNX str10 'a' str11 'b' str12 'c'
MSETNX str12 'd' str13 'e'
7>MGET:一次得到多个键值
语法: MGET key key
MGET str4 str5 str6
8>STRLEN:获取key的字符串长度
语法: STRLEN key
STRLEN str4
9>SETRANGE:相当于字符串替换
语法:SETRANGE key offset value
SET str7 'hello'
SETRANGE str7 5 'xdl'
注意: 如果设置key原来的字符串的长度比偏移量小,就会以零字节(\x00)来填充
10>SETNX:只有KEY不存在的时候才能设置成功
语法: SETNX key value
SETNX str7 'hello'
11>SETEX:设置一个KEY并且设置一个过期时间
语法: SETEX key seconds value
SETEX str8 30 'xdl'
12>PSETEX: 以毫秒为单位设置KEY的生存周期
语法:PSEREX key milliseconds value
PSETEX set9 20000 'hello'
13> INCR:对key中存储的数字加1
语法: INCR key
SET str14 1
INCR str14
INCR str15
注意:key如果不存在,则会先初始化为0,在进行INCR操作
14>INCRBY:将key中存储的数字加上指定增量
语法: INCRBY key INCREMENT
SET str16 10
INCRBY str16 5
INCRBY str16 1.5
15>INCRBYFLOAT:将key中存储的数字加上指定浮点数
语法; INCRBYFLOAT key increment
SET str17 1
INCRBYFLOAT str17 1.5
16>DECR:将key中存储的数字减1
语法: DECR key
SET str18 1
DECR str18
17>DECRBY:将key中存储的数值减指定值
语法: DECRBY key decrement
SET str19 20
DECRBY str19 5
18>APPEND:通过APPEND将值追加到字符串末尾
语法:APPEND key value
SET str20 'xdl'
APPEND str20 'o2o'
LIST列表类型
1>LPUSH:向列表左端添加元素
语法: LPUSH key value value ....
LPUSH list1 a b c
2>RPUSH:向列表右端添加元素
语法: RPUSH key value ....
RPUSH list1 d e
3>LRANGE:获取列表片段
语法: LRANGE key start stop
LRANGE list1 0 -1
4>LPUSHX:向列表头部添加元素,只有key存在才添加
语法: LPUSHX key value
LPUSHX list1 a
5>RPUSHX:向列表尾部添加元素,只有key存在才添加
语法: RPUSHX key value
6>LPOP:将列表头部的元素弹出
语法: LPOP key
LPOP list1
7>RPOP:弹出列表尾部元素
语法: RPOP key
RPOP list1
8>LLEN:获取列表长度
语法 LLEN key
LLEN list1
9>LREM:删除列表中的指定值
语法: LREM key count value
count >0 :从列表头部开始,向尾部搜索,移除与value相等的元素,移除count个
count <0 :从列表的尾部开始,向头部搜索,,移除与value相等的元素,移除count个
count = 0:移除列表中所有与value相等的元素
LPUSH list3 a b c d a e b d c b e d
LREM list3 2 a
LREM list3 -2 b
LREM list3 0 d
10>LINDEX:获取指定索引元素上的值
语法: LIDEX key index
LINDEX list3 3
11>LSET:设置指定元素的值
语法: LSET key index value
LSET list3 10 a
12>LTRIM:只保留列表片段
语法:LTRIM key start stop
LTRIM list3 0 3
LPUSH list3 a b c a b c a b c
LTRIM list3 0 1000
13>LINSERT 向列表中插入元素
语法: LINSERT key BEFORE|AFTER pivot value
LPUSH list4 a b c d
LINSERT list4 BEFORE 'b' 'x'
LINSERT list4 AFTER 'b' 'x'
14>RPOPLPUSH:将元素从一个列表转移到另一个列表
语法 RPOPLPUSH source destination
LPUSH list5 a b c
LPUSH list6 x y z
RPOPLPUSH list5 list6
SET集合类型:无序集合
1> SADD:向集合中添加一个元素
语法 SADD key value [,.......]
SADD set1 xdl
SADD set1 itxdl
2>SMEMBERS:返回指定集合中的元素
语法: SMEMBERS key
SMEMBERS set1
3>SISMEMBER:检查member是否是集合中的成员
语法:SISMEMBER key member
SISMEMBER set1 xdl
4>SREM:删除集合中一个或多个成员
语法:SREM key member [member ....]
SREM set1 xdl
5>SPOP:删除并返回集合中的随机元素
语法: SPOP key
SPOP set1
6>SRANDMEMBER:随机返回集合中元素
语法: SRANDMEMBER key count
注意:
count 为正数,而且小于集合中的元素,返回一个随机元素的集合数组,
count 数大于集合中的个数的时候,返回整个集合
count 为负数,返回一个数组,数组中的成员可能出现重复,数组的长度是count的绝对值
SRANDMEMBER set1 -3
7>SDIFF:返回集合的差集
语法: SDIFF key key ....
SADD set2 a b c d
SADD set3 c d e f
SADD set4 a e
SDIFF set3 set2
SDIFF set2 set3 set4
8>SINTER:返回集合的交集
语法: SINTER key key key ...
SINTER set2 set3
SADD set5 c
SINTER set2 set3 set5
9>SUNION:返回集合中并集
语法: SUNION key key ...
SUNION set2 set3
SUNION set2 set3 set4
10>SCARD:返回集合中元素个数
语法: SCARD key
SCARD set2
11>SDIFFSTORE:将差集的结果保存到指定的集合当中
语法: SDIFFSTORE destination key key ....
SDIFFSTORE set6 set2 set3
12>SINTERSTORE:将交集的结果保存到指定的集合当中
语法: SINTERSTORE destination key key ....
SINTERSTORE set7 set2 set3
13>SUNIONSTORE:将并集的结果保存到指定的集合当中
语法: SUNIONSTORE destination key key ....
SUNIONSTORE set8 set2 set3
14>SMOVE:将集合中的元素移动另一个集合中
语法 SMOVE source destination member
SMOVE set3 set2 e
Hash类型
1>HSET:将哈希表中的key中的field设置成指定的value
语法:HSET key field value
HSET h1 username 'zhangsan'
HSET h1 password '123'
HSET h1 age '18'
2>HGET:返回哈希表key中给的field的值
语法: HGET key field
HGET h1 username
HGET h1 age
3>HSETNX:将hash表中的field设置成指定的值,只有field不存在才能成功,如果field存在,操作无效
语法 HSETNX key field value
HSETNX h1 aaa '20'
HSETNX h1 aaa '21'
4>HMSET:通过多个 field value设置到hash表key中
语法 HMSET key field value field value .....
HMSET h2 username 'lisi' age '20' password '456'
5>HMGET:一次获得hash表key中多个field的值
语法: HMGET key field field .....
HMGET h2 username age password
HMGET h2 username age password aaa
注意:如果hash表key中field不存在,返回nil
6>HGETALL:返回hash表key中所有的field和value
语法 HGETALL key
HGETALL h2
7>HKEYS:返回hash表key中的所有的field
语法 HKEYS key
HKEYS h2
keys * 查看所有的key
8>HVALS:返回hash表key中所有的field的对应值
语法 HVALS key
HVALS h2
9>HEXISTS:检测hash中key的field是否存在
语法: HEXISTS key field
HEXISTS h2 username
HEXISTS h2 aaa
10>HLEN:返回hash表key中的field的数量
语法 HLEN key
HLEN h2
11>HINCRBY :给hash表key中的field做增量操作
语法 HINCRBY key field increment
HSET h3 age 20
HINCRBY h3 age 5
12>HINCRBYFLOAT:给hash表key中的field做增量浮点操作
语法: HINCRBYFLOAT key field increment
HSET h3 aaa '12.2'
HINCRBYFLOAT h3 aaa 2.5
13>HDEL:删除hash中key的指定field,可删除一个或多个
语法: HDEL key field field .....
HDEL h2 username
HGETALL h2
zset 有序集合
1>ZADD:将元素添加到集合中
语法:ZADD key score member [score member..]
ZADD zset 100 xdl
ZADD zset 98 zhangsan 97 list 80 test 78 test1 60 test2 50 test4
2>ZSCORE:获得指定元素的分数
语法: ZSCORE key member
ZSCORE zset xdl
3>ZRANGE:按照元素分数从小到大的顺序返回指定索引start到stop之间的元素(包含两端)
语法: ZRANGE key start stop [WITHSCORES]
ZRANGE zset 0 -1
ZRANGE zset 0 -1 WITHSCORES
ZRANGE zset 0 1 WITHSCORES
ZRANGE zset 0 2000 WITHSCORES
ZRANGE zset 1000 2000 WITHSCORES
ZADD zset 60 test5 60 test6 60 test7 60 test8
注意:当两个元素的分值相同的时候,Redis在排序按照字典的顺序(0<9<A<Z<a<z),如果使用的是UTF-8的编码方式同样会按照中文字典的方式排序
4>ZREVRANGE:和ZRANGE相反,按照分值从大到小排序
语法: ZREVRANGE key start stop [WITHSCORES]
ZREVRANGE zset 0 -1
ZREVRANGE zset 0 -1 WITHSCORES
ZREVRANGE zset 0 2000 WITHSCORES
5>ZRANGEBYSCORE:获得指定分数范围的元素,按照分值从小到大排序,返回的是分值的指定min到max的元素
语法:ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
#获取70 -90之间的元素 包含70 90
ZRANGEBYSCORE zset 70 90
ZRANGEBYSCORE zset 70 90 WITHSCORES
ZADD zset 70 test9 75 test10 80 test11 85 test12 90 test13
ZRANGEBYSCORE zset (70 90 WITHSCORES
ZRANGEBYSCORE zset 70 (90 WITHSCORES
ZRANGEBYSCORE zset 70 (90 WITHSCORES LIMIT 0 3
注意: 通过(代表不包含
6>ZREVRANGEBYSCORE:获得指定分数范围的元素,按照分值从大到小的顺序返回,
语法: ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]
ZREVRANGEBYSCORE zset 90 70 WITHSCORES
ZREVRANGEBYSCORE zset (90 70 WITHSCORES
ZREVRANGEBYSCORE zset (90 70 WITHSCORES LIMIT 0 3
7> ZINCRBY:操作元素的分值,返回操作之后的分数
语法:ZINCRBY key increment member
ZINCRBY zset 10 test13
ZINCRBY zset -20 test13
8>ZCARD:来获取集合中的元素数量
语法:ZCARD key
ZCARD zset
9>ZCOUNT:获取分数内的元素数量
语法:ZCOUNT key min max
ZCOUNT zset 70 90
ZCOUNT zset (70 (90
10>ZREM:删除一个或多个元素,返回删除元素的数量
语法:ZREM key member .....
ZREM zset test13 test12
11>ZREMRANGEBYRANK:按照排名范围删除元素,按照分数从小到大的顺序删除指定的排名范围内的所有元素
语法: ZREMRANGEBYRANK key start stop
ZADD testRen 1 a 2 b 3 c 4 d 5 e 6 f 7 g 8 h
ZREMRANGEBYRANK testRen 0 1
ZRANGE testRen 0 -1 WITHSCORES
12>ZREMRANGEBYSCORE:按照分数范围删除元素
语法:ZREMRANGEBYSCORE key min max
ZADD testRen1 1 a 2 b 3 c 4 d 5 e 6 f 7 g 8 h
ZRANGE testRen1 0 -1
ZREMRANGEBYSCORE testRen1 3 7
13>ZRANK:获取指定元素的排名,根据分数从小到大的顺序
语法 ZRANK key member
ZRANK zset xdl
14>ZREVRANK: 获取指定元素排名.根据分数从大到小的顺序
语法: ZREVRANK key member
ZREVRANK zset xdl
15>ZINTERSTORE:计算有序集合的交集,并将结果保存起来
语法:ZINTERSTORE destination numkeys [WEIGHTS weight weight] [AGGREGATE SUM | MIN |MAX]
ZADD zset2 1 a 2 b 3 c
ZADD zset3 10 a 20 b 30 c
ZINTERSTORE zset4 2 zset2 zset3
ZRANGE zset4 0 -1 WITHSCORES
ZINTERSTORE zset5 2 zset2 zset3 AGGREGATE MIN
ZRANGE zset5 0 -1 WITHSCORES
ZINTERSTORE zset6 2 zset2 zset3 AGGREGATE MAX
ZRANGE zset6 0 -1 WITHSCORES
ZINTERSTORE zset7 2 zset2 zset3 WEIGHTS 2 0.2
ZRANGE zset7 0 -1 WITHSCORES
16>ZUNIONSTORE :计算有序集合的并集,将结果保存起来
语法: ZUNIONSTORE destination numkeys [WEIGHTS weight weight] [AGGREGATE SUM | MIN |MAX]
ZADD zset8 1 a 2 b 3 c
ZADD zset9 4 d 5 e 6 f 7 a
ZUNIONSTORE zset10 2 zset8 zset9
ZRANGE zset10 0 -1 WITHSCORES
ZUNIONSTORE zset11 2 zset8 zset9 AGGREGATE SUM
ZRANGE zset11 0 -1 WITHSCORES
ZUNIONSTORE zset12 2 zset8 zset9 AGGREGATE MIN
ZRANGE zset12 0 -1 WITHSCORES
ZUNIONSTORE zset13 2 zset8 zset9 AGGREGATE MAX
ZRANGE zset13 0 -1 WITHSCORES
ZUNIONSTORE zset14 2 zset8 zset9 WEIGHTS 2 2
ZRANGE zset14 0 -1 WITHSCORES
其他
SETNX key value 将 key 的值设为 value ,当且仅当 key 不存在。若给定的 key 已经存在,则 SETNX 不做任何动作。
SETEX KEY_NAME TIMEOUT VALUE 用于在Redis键中的指定超时,设置键的字符串值。字符串,如果在键中设置了值则返回OK。如果值未设置则返回 Null。
type key 查看key是什么类型
info 可以看到redis当前运行情况, info下的也都可以再次调用.
如:
info keyspace 查看所有库中的key的数量
info Clients 查看连接的客户端数量
info Memory 查看内存使用情况
...........巴拉巴拉...还有很多具体可以命令行中直接通过 info 命令查看.
dbsize则是当前库key的数量
keys *这种数据量小还可以,大的时候可以直接搞死生产环境。
dbsize和keys *统计的key数可能是不一样的,如果没记错的话,keys *统计的是当前db有效的key,而dbsize统计的是所有未被销毁的key(有效和未被销毁是不一样的,具体可以了解redis的过期策略)
# expire 设定key生存时间 返回值: 为1成功, 0失败或者不存在 语法: expire key time
# 删除当前数据库中的所有Key
flushdb
# 删除所有数据库中的key
flushall
Redis 优化 找出拖慢 Redis 的罪魁祸首
INFO commandstats 通过这个工具可以查看所有命令统计的快照,比如命令执行了多少次,执行命令所耗费的毫秒数(每个命令的总时间和平均时间)
只需要简单地执行 CONFIG RESETSTAT 命令就可以重置,这样你就可以得到一个全新的统计结果。