简介:redis是基于内存可持久化的日志 型,key-value数据结。
Redis key 相关指令:
exits:检查是否存在
del:删除
type:返回给定key值的类型。
keys pattern:返回匹配类型模式的所有key
randomkey:返回中当前数据库中随机选择一个key。
rename oldkey newkey:重命名
expire key second:为key指定过期时间。
ttl key: 返回设置过期时间剩余的秒数。
select db-index:通过索引选择数据库。默认链接数据库为0,默认数据库数为16.
move key db-index:将key从当前数据库移动到指定数据库。
redis数据类型:
支持的数据类型:字符串、列表、哈希对象、集合对象、有序集合 。
string 类型数据操作指令:
set key value:设置key 对应的值value
setnx key value :如果key不存在,设置key对应的值value,如果key存在,返回0.
get key:获取key对应的值value
getset key value:先获取key的值,在设置key的值。
mget key1 key2:一次获取多个key值。
mset key1 value1 ... :一次设置多个key值。
msetxn key1 value1 ....:一次设置多个key值,不会覆盖。
incr key:对key值做++操作。
desc key:对key值做--操作。
incrby key integer:对key加上指定值。
decrby key integer:对key减指定值。
hash类型数据操作指令:
hset:key filed value 设置hash filed为指定值。
hget key filed :获取指定hash field。
hmset key field1 valiue1...:同时设置hash多个field。
hmget key field1...:获取多个指定的hash field。
hincrby key field integer:将指定的hash field 加上指定值。
hexits key field :检查field值是否存在。
hdel key field:删除指定hash field 。
hlen key:返回指定指定hash 的field数量。
hkeys key:返回hash 所有的field。
hvals key:返回hash 所有的value。
hgetall : 返回hash 所有的field 和value。
list 类型数据操作指令:
lpush key string:对key对应的list头部添加新元素。
rpush key string:对key对应的list尾部添加新元素。
llen key:返回key对应list长度。
lrange key start end:返回指定区间的元素。
ltrim key start end :截取list指定区间元素。
lset key index value:设置list中指定下表index的元素值。
lrem key count value:从list头部(count>0)或尾部(count<0)删除一定数量(count)屁屁额指定值value的元素。
lpop key:从list头部删除并返回元素。
rpop key:从list尾部删除并返回元素。
blpop key1 ... keyN timeout:从左向右扫描,返回第一个非空list进行lpop操作ping返回。所有的list为空会阻塞timeout秒,timeout=0会一直阻塞。
brpop key1 ... keyN timeout:与blpop对应,从尾部删除。
set 类型数据操作指令:
sadd key member:添加一个string 到key对应的set集合中。
srem key member:从key对应set中删除指定元素。
spop key:删除并返回key对应set中随机的一个元素。
srandommenber key:随机读取key对应set中的元素。
smove srckey dstkey member:从srckey对应的set中移除member,并添加到dstkey对应的set中,整个操作是原子的。
scard key:返回key对应set元素个数。
sismember key member:判断member是否为key对应set中的元素。
sinter key1 key2....:返回给定key的交集。
sinterstore dstkey key1 key2....:返回给定key的交集,并保存到dstkey对应的set中。
sunion key key1...:返回给定key集合的并集。
sunionstore dstkey key key1...:返回给定key集合的并集,并保存到dstkey对应的set中。
sdiff key1 key2 ...:返回给定key的差集。
sdiffstore dstkey key1 key2 ...:返回给定key的差集,并保存到dstkey对应的set中。
smembers key:返回key对应set所有元素。
sorted set 类型数据操作指令:
zadd key score member:添加元素到集合中,元素在集合中对应的score。
zrem key member :删除指定元素。
zincrby key member:增加对应member 的score值。
zrank key member :返回指定元素在集合中的排名,集合元素是按score从小到大排序。
zrevrank key member :返回指定元素在集合中的排名,集合元素是按score从大到小排序。
zrange key start end:从集合中获取指定区间元素,返回有序结果。
zrevrange key start end:从集合中获取指定区间元素,返回逆序结果。
zrangebyscore key min max:返回集合中score在给定score区间的元素。
zcount key min max:返回集合中score在给定义区间的数量。
zcard key:返回集合中元素个数。
zscore key element :返回集合中给定元素的score值。
zremrangebyrank key min max:删除集合中排名在给定区间的元素。
zremrangebyscore key min max:删除集合中score在给定区间的元素。
持久化:
快照方式(Default):讲内存中的数据以快照的方式写入到二进制文件中,默认文件名为dump.rdb
save命令保存:在主线程中保存快照,redis用一个主线程来处理所有的客户端请求,会阻塞所有的客户端请求。
bgsave命令保存:
快照方式在一定时间隔做一次,redis意外宕机,会丢失最后一次快照后所有的数据修改。
日志追加方式:将每一条收到的命令通过write函数追加到文件中(默认:appendOnly.aof)。redis重启会通过重新执行文件中保存的写命令在内存中重建整个数据库内容。这种持久化也可能丢失部分修改,操作系统会在内核中缓存write的修改,可能不是立即写到磁盘上。
appendonly yes // 启用日志追加持久化方式
appendfsync always // 每次收到的写命令立即写入磁盘,最慢,保证完全持久化,不推荐使用。
appendfsync everysec // 每秒强制写入一次,在性能和持久化有很好的折中,推荐使用
appendfsync no // 完全依赖操作系统,性能最好,没有持久化保证。
redis 虚拟内存:
主从同步:
redis 的安装与配置