Redis使用总结

在公司这么久,Redis使用的比较多,正好总结一下。redis的主要好处是:使用方便,简单,redis的实现源码好像也只有不多的代码,是一个很轻便的nosql。redis

用途:公司主要是用在一些实时数据的缓存,一些大量数据的入库(经过list类型),还有redis简单实现的订阅发布的功能。sql

最近nosql的红火,出现了好多这样的数据库,不过我也只用了redis这个,感受挺好用的,就是简单,方便足够了。数据库

1.redis的数据结构以及主要方法

redis缓存

包括的属性:keys
主要 方法:
  exists(key):判断key是否存在
  del key:删除key
  rename key:修改key名字
  dbsize():数据库key的数量
  flushdb():删除当前数据库的全部key
  flushall():删除全部数据库的key

string类型
主要方法: 
  set(key,value):设置key对应的value
  setnx(key,value):设置要key不存在
  mset():一次设置多个key的值
  get key:获取key的值
  append key value:给指定key追加value
  substr key start end:截取value

list类型
主要方法:
  lpush:在list头部添加值
  rpush:在list尾部添加值
  llen:返回list的长度
  lrange:返回指定区间内的元素
  lset:设置list指定下标的元素值。
  lpop:从头部删除元素
  rpop:从尾部删除元素

set类型(无序集合经过hashtable实现)
主要方法:
  sadd:添加一个元素到key对应的set集合中。
  srem:删除指定元素
  spop:删除key对应的set中随机的一个元素
  scard:返回set的元素个数

sorted set类型(和set相似,多了关联一个double类型的score 是skip list和hashtable的混合体)
主要方法:
  zadd:添加元素到集合,元素在集合中存在则更新对应的score
  zrem:删除指定元素
  zrank:返回指定元素的下标,集合中元素是按score从小到大排序的
  zcount:放回集合中给定区间的数量
  zscore:返回指定元素对应的score

hash类型
主要方法:
  hset: 设置hashfield
  hget:获取指定的hashfield
  hexists:判断field是否存在
  hdel:删除指定的hash field

2.订阅和发布

redis简单的实现了这个功能,在需求不复杂的状况下,感受也挺方便的,不须要去引入其余的mq等服务器服务器

Jedis有两种订阅模式: subsribe(通常模式设置频道)和psubsribe(使用模式匹配来设置频道)网络

订阅方
jedis.psubscribe(listener, new String[]{"hello_*"})
listener 这个要本身继承JedisPubSub这个抽象类,去实现订阅信息,取消订阅等方法。

发布方 
jedis.publish("hello_foo", "bar123");

3.事务和管道(简单的叙述)

事务:是指把指令发送过去以后,redis先放到队列中,并无当即执行数据结构

管道:是把指令所有一块儿发送过去,而后一次性接收所有的结果app

4.持久化(经过别人的文章)

1.持久化支持:快照(默认),aof方式nosql

2.快照方式:是将数据先存储在内存,而后当数据累计达到某些设定的伐值的时候,就会触发一次DUMP操做,将变化的数据一次性写入数据文件(RDB文件)。日志

3.AOF 工做原理: 是将数据也是先存在内存,可是在存储的时候会使用调用fsync来完成对本次写操做的日志记录,这个日志揭露文件实际上是一个基于Redis网络交互协议的 文本文件。AOF调用fsync也不是说所有都是无阻塞的,在某些系统上可能出现fsync阻塞进程的状况,对于这种状况能够经过配置修改,但默认状况不 要修改。AOF最关键的配置就是关于调用fsync追加日志文件的平率,有两种预设频率,always每次记录进来都添加,everysecond 每秒添加一次。两个配置各有所长后面分析。因为是采用日志追加的方式来持久话数据,因此引出了第二个日志的概念:rewrite

4.Rewrite

将日志文件中的全部数据都从新写到另一个新的日志文 件中,可是不一样的是,对于老日志文件中对于Key的屡次操做,只保留最终的值的那次操做记录到日志文件中,从而缩小日志文件的大小。这里有两个配置须要注 意:

auto-aof-rewrite-percentage 100 (当前写入日志文件的大小占到初始日志文件大小的某个百分比时触发Rewrite)
auto-aof-rewrite-min-size 64mb (本次Rewrite最小的写入数据良)

5.主从复制

1.master能够有多个slave

2.除了多个slave连到相同的master外,slave也能够链接其余slave造成图状结构

3.主从复制不会阻塞master。也就是说当一个或多个slave与master进行初次同步数据时,master能够继续处理client发来的请求。相反slave在初次同步数据时则会阻塞不能处理client的请求。

4.主从复制能够用来提升系统的可伸缩性,咱们能够用多个slave专门用于client的读请求,好比sort操做可使用slave来处理。也能够用来作简单的数据冗余

5.能够在master禁用数据持久化,只须要注释掉master配置文件中的全部save配置,而后只在slave上配置数据持久化。

相关文章
相关标签/搜索