Redis常用命令帅哥专供版

[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 命令就可以重置,这样你就可以得到一个全新的统计结果。

转载于:https://my.oschina.net/chinaliuhan/blog/3065356

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值