redis之key、string、list、set、sort set、hash、精细持久化、snapshotting快照保存、主从模式

keys:在redis里面,除了"\n"和空格不能作为名字外,其他都可以,长度不做限制;
命名时:key不要太长,占内存,查询慢;也不要太短,不容易识别
exists key:测试指定key是否存在
del key:删除key
type key:返回给定key的类型
keys pattern:返回指定模式的所有key(例:keys *e:返回以e结尾的key)
rename oldkey newkey:改名字
dbsize:返回当前数据库的key数量
expire key seconds:为key指定过期时间
ttl key:返回key的剩余过期秒数
select db-index:选择数据库(只有16个数据库0-15)
move key db-index:将key从当前数据库移动到指定数据库
flushdb:删除当前数据库中的所有key

flushall:删除所有数据库中的key



string:
set:设置值
mset key1 value1 key2 value2...:一次性设置多个值
mget key1 key2:一次性获取多个key
incr key:对key进行累加1操作,可操作已有key和新key,要求key的信息值必须为整形的;类似于++
decr key:
incrby key integer:加指定值
decrby key integer:减指定值
append key value:给指定的key的字符串值追加value
substr key start end:返回截取过的key的字符串值(包括start和end)




lpush key string:在key对应的list的头部添加元素,
rpop key:从list的尾部删除元素,并返回删除元素
llen key:对应list的长度,key不存在返回0,如果key对应的类型不是list返回错误
lrange key start end:返回指定区间上的元素,下标从零开始
rpush key string:同上,在尾部添加
lpop key:从list的头部删除元素,并返回删除元素
ltrim key start end:截取list,保留指定区间内元素;start和stop参数都是0-based,0表示头部元素。和其他命令一样,start和stop也可以为负值,-1表示尾部元素。如果start大于链表的尾部,或start大于stop,该命令不错报错,而是返回一个空的链表,与此同时该Key也将被删除。如果stop大于元素的数量,则保留从start开始剩余的所有元素。
lrem key count value:在指定Key关联的链表中,删除前count个值等于value的元素。如果count大于0,从头向尾遍历并删除,如果count小于0,则从尾向头遍历并删除。如果count等于0,则删除链表中所有等于value的元素。如果指定的Key不存在,则直接返回0。
lset key index value:设定链表中指定位置的值为新值,其中0表示第一个元素,即头部元素,-1表示尾部元素。如果索引值Index超出了链表中元素的数量范围,该命令将返回相关的错误信息。
lindex key index:该命令将返回链表中指定位置(index)的元素,index是0-based,表示头部元素,如果index为-1,表示尾部元素。如果与该Key关联的不是链表,该命令将返回相关的错误信息。
linsert key BEFORE|AFTER pivot value:该命令的功能是在pivot元素的前面或后面插入参数中的元素value。如果Key不存在,该命令将不执行任何操作。如果与Key关联的Value类型不是链表,相关的错误信息将被返回。返回值:成功插入后链表中元素的数量,如果没有找到pivot,返回-1,如果key不存在,返回0。
rpushx key value:仅有当参数中指定的Key存在时,该命令才会在其所关联的List Value的尾部插入参数中给出的Value,否则将不会有任何操作发生。 返回插入后链表中元素的数量。
rpoplpush source destination:原子性的从与source键关联的链表尾部弹出一个元素,同时再将弹出的元素插入到与destination键关联的链表的头部。如果source键不存在,该命令将返回nil,同时不再做任何其它的操作了。如果source和destination是同一个键,则相当于原子性的将其关联链表中的尾部元素移到该链表的头部。返回弹出和插入的元素。 




set:是string类型的无序集合
set元素最大可以包含(2的32次方-1)个元素,可对set集合取并集,交集,差集(可实现qq好友推荐功能)
注意:每个集合中的各个元素不能重复。
sadd key value:添加一个string元素到key对应的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的交集
sunion key1 key2....:返回所有给定key的并集
sdiff key1 key2....:返回所有给定key的差集
smembers key:返回key对应set的所有元素,结果是无序的
spop key :随机的移除并返回Set中的某一成员。 由于Set中元素的布局不受外部控制,因此无法像List那样确定哪个元素位于Set的头部或者尾部。;返回移除的成员,如果该Key并不存在,则返回nil。
srandmember key :和SPOP一样,随机的返回Set中的一个成员,不同的是该命令并不会删除返回的成员。
SDIFF key [key ...]:返回参数中第一个Key所关联的Set和其后所有Keys所关联的Sets中成员的差异。如果Key不存在,则视为空Set。
SDIFFSTORE destination key [key ...] :该命令和SDIFF命令在功能上完全相同,两者之间唯一的差别是SDIFF返回差异的结果成员,而该命令将差异成员存储在destination关联的Set中。如果destination键已经存在,该操作将覆盖它的成员。
SINTERSTORE destination key [key ...]:该命令和SINTER命令在功能上完全相同,两者之间唯一的差别是SINTER返回交集的结果成员,而该命令将交集成员存储在destination关联的Set中。如果destination键已经存在,该操作将覆盖它的成员。返回交集成员的数量。 
SUNIONSTORE destination key [key ...] :该命令和SUNION命令在功能上完全相同,两者之间唯一的差别是SUNION返回并集的结果成员,而该命令将并集成员存储在destination关联的Set中。如果destination键已经存在,该操作将覆盖它的成员。返回并集成员的数量。



sort set: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:删除集合中排名在给定区间的元素




hset key field value:设置
hget key field:
hmget key field1 field2...:
hmset key field1 value1 field2 value2.....:
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的所有value
hgetall key:返回hash的所有field和value




append only file(AOF持久化:精细持久化)
把修改的每个key都保存起来,并且频率可以达到秒级
ps -A | grep redis:查看redis服务器相关运行程序和进程
kill -9 进程号:杀死进程,不安全,有可能丢失数据
set nu:设置dos窗口显示行
开启AOF持久化(会清空redis内部的数据)
(同时可以修改备份文件的名字,默认是appendonly.aof)
配置文件被修改,需删除旧进程,根据新配置文件重启新进程
appendoly yes:启用aof持久化方式
appendfilename appendonly.aof:保存命令的文件
appendfsync always:每次收到写命令就立即强制写入磁盘,服务器最慢的,但是保证完全的持久化,不推荐使用
appendfsync everysec:每秒钟强制写入磁盘一次,在性能和持久化方面做了很好的折中,推荐
appendfsync no:完全依赖os,性能最好,持久化没保证
手动执行aof:./redis-cli bgrewriteaof




snap shotting 快照持久化
该持久化默认开启,一次性把redis中全部的数据保存一份存储在硬盘中,如果数据比较多就不适合频繁进行此操作
默认文件名:dump.rdb
vi/vim 文件名:查看文件
save 900 1  #900秒内如果超过1个key被修改,则发起快照保存
save 300 10 #300秒内超过10个key被修改,发起快照
save 60 10000 #60秒内超过10000个key被修改,发起快照保存
以上三个save的意思:
数据修改的频率非常高,备份的频率也高
数据修改的频率低,备份的频率也低
快照持久化文件的名字和存储的位置: dbfilename dump.rdb


redis持久化相关命令
bgsave:异步保存数据到磁盘
lastsave:返回上次成功保存到磁盘的unix时时间戳
shutdown:同步保存到服务器并关闭redis服务器
bgrewriteaof:当日志文件过长时优化AOF日志文件存储
./redis-cli -h 127.0.0.1 -p 6379 bgsave  #手动发起快照持久化




为了降低每个redis服务器的负载,可以多设置几个,并做主从模式,一个负责写数据,其他服务器负责读数据
主服务器数据会“自动”同步给从服务器
想成为谁的从服务器,更改配置文件:redis.conf
slaveof 对方的IP地址 对方服务器的端口号(重启服务器生效。但此时自己只能读不能写)
如果自己需要写数据,需要修改配置文件:slave-read-only yes

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值