领导没不回复领导消息好吗是默认设置吗?

Redis特性Redis可以做什么缓存;排行榜系统;计数器应用;社交网络:点赞,喜好,推送;消息队列。Redis为什么这么快1.通过内存访问数据2.采用非阻塞IO,不在网络IO上浪费过多时间3.单线程避免了线程切换和多线程竞争资源的问题Redis与Memcahce比较1.Redis为单线程系统,memcache为多线程2.Redis支持持久化,memcache不支持3.Redis天然支持主从复制,memcache需要自己实现4.Redis内存分配临时申请空间,存在碎片;memcache使用预分配内存池的方法,可以省去内存分配的空间5.数据量大时redis会通过swap把冷数据读到硬盘中,mencache不会6.Redis的数据类型比mencache多,因此应用场景更广终上所诉:追求高可用,项目业务比较复杂时建议用redis,追求读写速度用memcahceRedis 数据类型与APIredis数据类型与内部编码字符串字符串类型的实际值可以是字符串,数字(整数,浮点),二进制图片,但最大值不超过512MB常用命令1.设置值:set key value [ex seconds] [px milliseconds] [nx|xx]ex seconds:设置秒级过期时间(对应快捷键setex)px milliseconds:设置毫秒级过期时间nx:key不存在才设置成功(对应快捷键setnx)xx:key存在才设置成功2.批量设置值:mset key value [key value …]3.获取值:get key4.批量获取值:mget key [key …]5.计数:incr key值需要是整数,否则返回错误每次操作自增+1Key不存在按照值为0自增,返回1内部编码int:8个字节的长整型embstr:小于等于39个字节的字符串raw:大于39个字节的字符串哈希类似map或者对象的结构,适合存储对象信息常用命令1.设置值:hset key field value2.获取值:hget key field3.删除field:hdel key field4.计算filed个数:hlen key5.批量设置:hmget key field [key field …]6.批量获取: hmget key field [field …]7.判断field是否存在:hexists key field8.获取所有field: hkeys key9.获取所有value:hvals key10.获取所有field-value:hgetall key内部编码当元素个数小于hash-max-ziplist-entries(默认512个),所有值小于hash-ziplist-value(默认64字节)时,使用ziplist,否则用hashtable;ziplist内存小,hashtable读写速度快列表可以用来存储多个字符串,列表最多存储2^32-1个元素;使用场景:lpush+lpop=栈,lpush+rpop=队列,lpush+ltrim=有限集合,lpush+brpop = 消息队列。常用命令1.从右边插入元素:rpush key value [value …]2.从左边插入元素:lpush key value [value …]3.向某个元素前面或者后买插入元素:linsert key before|after pivot value4.查找指定范围的元素: lrange key start end5.获取指定下标的元素:lindex key index6.获取列表长度:llen key7.从左侧删除元素:lpop key8.从右侧删除元素:rpop key9.删除指定元素:lrem key count valuecount>0从左到右删除count个元素count<0从右到左删除count个元素Conut=0删除所有10.按照索引范围删除:ltrim key start end11.修改指定下标元素:lset key index newValue12.阻塞式弹出:blpop|brpop key [key …] timeouttimeout为阻塞时间,单位秒,为0时如果无对应数据会一直阻塞可用于实现消息队列集合可以保存多个字符串对象,与列表区别在于集合为无序的不能通过下标查询元素,集合不允许有重复对象;使用场景:sadd = 标签,spop/srandmember = 生成随机数,sadd+sinter = 社交需求常用命令1.添加元素:sadd key element [element …]2.删除元素:srem key element [element …]3.计算元素个数:scard key4.判断元素是否在集合中: sismember key element5.随机返回指定个数元素:srandmember key [count]默认为1个6.从集合中随机弹出一个元素:spop key弹出后集合元素会减少7.获取所有元素:smembers key8.求集合交集:sinter key [key …]9.求集合差集:sdiff key [key …]10.求集合并集:suinon key [key …]11.保存交集,差集,并集结果:sinterstore|suionstore|sdiffstore destion key [key …]其中destion 为新集合的key内部编码当元素数量小于set-max-inset-entries(默认512个)时用inset否则用hashtable有序集合有序集合与集合类似,区别在于给每个元素增加了一个分数,做为排序的依据。使用场景:zadd+zincrby = 排行榜系统常用命令1.添加成员:zadd key score member [score member]2.计算成员个数:zcard key3.计算某个成员的分数:zscore key member4.计算成员的排名从低到高:zrank key member5.计算成员的排名从高到低:zrevrank key member6.删除成员:zrem key member7.增加成员分数:zincrby key increment memberincrement 为增加的分值8.返回指定排名范围的成员从低到高:zrange key start end [withsorce]9.返回指定排名范围的成员从高到低:zrevrange key start end [withsorce]10.返回指定分数范围的成员从低到高:zrangebyscore key min max [withsorce]min取-inf代表无限小,max 取+inf代表无限大11.返回指定分数范围的成员从高到低:zrevrangebyscore key min max [withsorce]12.删除指定排名的升序元素:zremrangebyrank key start end13.删除指定分数范围的成员:zremrangebyscore key min max14.交集:zinterstroe destination numkeys key [key …] [weights weight [weight …]] [aggregate sum|min|max]numkeys:需要做交集的个数weights weight 每个键的权重Aggregate sum|min|max 交集后分值汇总方式15.并集:zuniontroe destination numkeys key [key …] [weights weight [weight …]] [aggregate sum|min|max]内部编码当元素个数小于zset-max-ziplist-entries(默认128个),同时zset-max-ziplist-value(默认64)时用ziplist否则用skiplist(跳表)键管理1.删除键:del key2.重命名:rename key newkey3.随机返回一个键:randomkey4.设置键在seconds秒后过期: expire key seconds5.键在秒级时间戳timestamp后过期:expireat key timestamp6.遍历键:keys pattern7.渐进式遍历键: scan cursor [match pattern] [count number]cursor 为上一个游标,从0开始,每次遍历产生新的cursor,遍历完所有键后cursor返回0match pattern 匹配参数count number 每次遍历个数渐进式相比普通遍历,不会造成阻塞,但是在遍历时如果键有变化不保证能遍历所有键8.清除所在数据库数据所有的键:flushdb9.清除所有的键:flushallinfo 命令详解server一般 Redis 服务器信息,包含以下域:redis_version : Redis 服务器版本redis_git_sha1 : Git SHA1redis_git_dirty : Git dirty flagos : Redis 服务器的宿主操作系统arch_bits : 架构(32 或 64 位)multiplexing_api : Redis 所使用的事件处理机制gcc_version : 编译 Redis 时所使用的 GCC 版本process_id : 服务器进程的 PIDrun_id : Redis 服务器的随机标识符(用于 Sentinel 和集群)tcp_port : TCP/IP 监听端口uptime_in_seconds : 自 Redis 服务器启动以来,经过的秒数uptime_in_days : 自 Redis 服务器启动以来,经过的天数lru_clock : 以分钟为单位进行自增的时钟,用于 LRU 管理clients已连接客户端信息,包含以下域:connected_clients : 已连接客户端的数量(不包括通过从属服务器连接的客户端)client_longest_output_list : 当前连接的客户端当中,最长的输出列表client_longest_input_buf : 当前连接的客户端当中,最大输入缓存blocked_clients : 正在等待阻塞命令(BLPOP、BRPOP、BRPOPLPUSH)的客户端的数量memory内存信息,包含以下域:used_memory : 由 Redis 分配器分配的内存总量,以字节(byte)为单位used_memory_human : 以人类可读的格式返回 Redis 分配的内存总量used_memory_rss : 从操作系统的角度,返回 Redis 已分配的内存总量(俗称常驻集大小)。这个值和 top 、 ps 等命令的输出一致。used_memory_peak : Redis 的内存消耗峰值(以字节为单位)used_memory_peak_human : 以人类可读的格式返回 Redis 的内存消耗峰值used_memory_lua : Lua 引擎所使用的内存大小(以字节为单位)mem_fragmentation_ratio : used_memory_rss 和 used_memory 之间的比率mem_allocator : 在编译时指定的, Redis 所使用的内存分配器。可以是 libc 、 jemalloc 或者 tcmalloc 。在理想情况下, used_memory_rss 的值应该只比 used_memory 稍微高一点儿。当 rss > used ,且两者的值相差较大时,表示存在(内部或外部的)内存碎片。内存碎片的比率可以通过 mem_fragmentation_ratio 的值看出。当 used > rss 时,表示 Redis 的部分内存被操作系统换出到交换空间了,在这种情况下,操作可能会产生明显的延迟。Because Redis does not have control over how its allocations are mapped to memory pages, high used_memory_rss is often the result of a spike in memory usage.当 Redis 释放内存时,分配器可能会,也可能不会,将内存返还给操作系统。如果 Redis 释放了内存,却没有将内存返还给操作系统,那么 used_memory 的值可能和操作系统显示的 Redis 内存占用并不一致。查看 used_memory_peak 的值可以验证这种情况是否发生。其他信息persistence :RDB 和 AOF 的相关信息stats : 一般统计信息replication : 主/从复制信息persistencecpu : CPU 计算量统计信息commandstats : Redis 命令统计信息cluster : Redis 集群信息keyspace : 数据库相关的统计信息除上面给出的这些值以外,参数还可以是下面这两个:all : 返回所有信息default : 返回默认选择的信息Redis 超级对象Bitmaps(位图)使用场景:取日期为key,可以做日活分析。用户数量很大(活跃用户比重较大时适合做)常用命令1.设置值:setbit key offset valueoffset 为位置取整数value 为值取0或者12.获取值: getbit key offset3.获取某个key元素的个数: bitcount key [start] [end]4.bitop op destkey key [key …]op 取 and(交集)|or(并集)|not(非)|xor(异或)destkey 为新key名称5 . 计算第一个值为targetbit的偏移量:bitops key targetBit [start] [end]HyperLogLog可以用极小的内存空间完成独立总数的统计。但是存在一定误差率,误差率约为0.81%。使用场景:计算独立用户数,百万用户相比时,内存空间要比set小几千倍。常用命令1.添加元素:pfadd key element [element …]2.计算元素数目:pfcount key [key …]3.合并: pfmerge destkey sourcekey [sourcekey]destkey 为新key名称Sourcekey为被合并的key合并后相同元素算一个元素GEO实现地理信息定位的功能。使用场景:附近的位置,摇一摇常用命令1.增加地理信息:geoadd key longitude latitude member [ longitude latitude member …]longitude latitude member分别为经度,纬度,成员2.获取地理信息geopos key member [key member …]3.获取两个地理位置的距离:geodist key member1 member2 [m|km|mi|ft]4.根据某经纬度为中心指定范围内的地理信息位置集合:georadius key longitude latitude radius m|km|ft|mi [withcoord] [withdist] [withhash] [asc|desc] [store key] [storedist key]withdist:在返回位置元素的同时,将位置元素与中心之间的距离也一并返回.距离的单位和用户给定的范围单位保持一致。withcoord:将位置元素的经度和纬度也一并返回。withhash:以52位有符号整数的形式,返回位置元素经过原始geohash编码的有序集合分值。这个选项主要用于底层应用或者调试,实际中的作用不大。命令默认返回未排序的位置元素。通过以下两个参数,用户可以指定被返回位置元素的排序方式:asc:根据中心的位置,按照从近到远的方式返回位置元素desc:根据中心的位置,按照从远到近的方式返回位置元素。store key: 将返回结果保存在指定键storedist key:将距离中心的距离保存到指定键5.根据某成员为中心指定范围内的地理信息位置集合:georadiusbymember key member radius m|km|ft|mi [withcoord] [withdist] [withhash] [asc|desc] [store key] [storedist key]操作同georadius6.获取geohash(地理位置对应的hash字符串):geohash key memberGEO数据类型为zset,地理位置以geohash保存在zset中。字符串越长代表位置越精确。两个字符串越相似,代表地理位置月近。Geohash可以与经纬度互相转换。Redis 常用功能Pipeline可以将一组redis命令组装,一次性传给redis进行处理,从而减少反复交付的次数。Pipeline使用要避免数据量过大,否则会增加客户端等待时间,造成网络阻塞Lua通过multi命令开启任务,discard暂停任务,exec执行任务。执行完任务后才完成事物。如果在执行任务时,事物中的key有被修改。任务将不执行。可在multi前执行watch key命令,防止key被修改。Redis 持久化RDB把当前数据生成快照保存到硬盘。触发机制1.手动触发:执行save或者bgsave命令2.自动触发:使用配置save m n 在m秒n次修改时触发save从节点全量复制主节点时执行bgsave执行debug reload 时触发save执行shutdown时触发savesave与bgsavesave 命令会阻塞当前Redis服务器,bgsave是对save阻塞问题做的优化,bgsave流程:1.执行bgsave命令2.fork开启子进程3.子进程生成RDB文件4.告知父进程已完成,父进程更新统计信息AOF以日志形式实现数据的实时持久化,是现在持久化的主流方式工作流程1.Redis所有写入命令会追加到aof_buf(缓冲区)2.根据文件同步策略同步数据到aof文件3.当文件太大时对aof文件进行重写4.Redis重启时加载aof文件恢复数据文件同步1.always:每次命令写入都同步2.everysec:每秒执行一次3.no:同步操作交给操作系统负责,通常同步周期最长为30秒AOF文件重写触发机制手动触发:执行bgrewriteaof命令自动触发:在aof文件大小超过auto-aof-rewrite-min-size,且文件大小-上次重写时文件大小/上次重新时文件大小>auto-aof-rewrite-percentage 时触发AOF文件重写流程1.执行aof重写请求2.Fork子进程3-1 完成fork后有新的写入继续写入aof_buf缓冲区3-2 为了防止fork后的数据丢失,fork后的数据写入aof_rewrite_buf 重写缓冲区4. 子进程根据内存快照,按照合并规则写入到新aof文件5-1 通知父进程,记录info persistence信息5-2 把重写缓冲区的数据写入新aof文件5-3 用新aof文件替换旧aof文件重启加载机制如果开启aof,加载aof文件;如果未开启aof或者aof文件不存在则使用rdb,加载rdb文件如果rdb文件不存在,就不加载任何文件直接重启RDB与AOF比较1.RDB比AOF文件小2.Redis恢复数据时加载RDB比AOF快很多3.RDB没有办法实时持久化4.RDB版本用二进制文件保存版本兼容没AOF好问题定位与优化fork操作问题原因:fork操作是重量级操作,会复制父进程的空间内表页(理论上需要复制与父进程同样的内存,但是linux有写时复制机制,父子进程贡献相同的物理内存页,实际会小很多,10G大概只需要20MB)问题定位: 通过info stats 统计排查 lastest fork查看最近一次的fork的耗时优化方法:1.Xen虚拟机对fork操作支持不好,因避免使用2.控制Redis实列最大内存,线上建议10GB以内3.合理配置linux内存?4.降低fork频率,适当放宽aof触发时机子进程问题原因:子进程负责重写操作,需要消耗cpu,内存和硬盘的资源问题定位:info persistence 查看当多个Redis实例部署在一台服务器时的重写状态查看重写时的cpu消耗查看重写时的redis 日志输出观察内存消耗状态优化方法:cpu:1.把内存数据写入文件会消耗大量cpu,因此尽量不要用单核cpu;2.一台机器如果多个实例,尽量保证不同时重写内存:1.同cpu尽量保证多个实列不同时重写2.设置no-appendfsync-on-rewrite yes避免在大量写入时重写硬盘:1.将文件写入硬盘时,会造成比较多的硬盘压力,因此不要和其他高硬盘操作放在一起。如:存储服务,消息队列2.设置no-appendfsync-on-rewrite yes避免在大量写入时重写3.开启aof功能时且流量高时,尽量不要用普通机械盘4.单机开启多个实例,可以把文件分盘存储AOF追加阻塞问题原因:常用的同步策略为everysec,此时当Redis有大量写入时,会导致fsync和重写同时发生,此时对比上次fsync时间有可能大于2秒,如果超过2秒主线程将堵塞,直到同步完成。问题定位:每次阻塞 aof_delayed_fsync指标会累加,通过info persistence 查看 aof_delayed_fsync指标优化方法:同子进程硬盘优化相关配置与命令1.指定RDB保存文件名:dbfilename2.动态更改RDB文件名:执行config set dbfilename {newfilename}3.动态更改RDB保存目录:config set dir {newDir}4.是否采用LZF压缩RDB文件:config set rdbcompression {yes|no},默认开启,建议开启,方便传输和保存到硬盘5.开启AOF持久化:appendonly yes6.设置AOF文件名:appendfilename 默认为appendonly.aof7.设置AOF文件同步方式:appendfsync 默认everysec8.重新AOF文件:执行bgrewriteaof9.AOF文件重写体积:auto-aof-rewrite-min-size 默认64MB10.AOF文件重写子进程根据内存快照每次批量写入新AOF文件的数据大小:aof-rewirte-incremental-fsync 默认大小为32MB11.在AOF重写期间是否执行fysnc(把缓存信息写入aof文件):no-appendfsync-on-rewriteRedis主从复制为Redis配置副本,实现故障的恢复和负载均衡建立复制一共有三种方式建立复制:1.从节点配置文件 中加入slaveof {masterHost} {masterPort}2.在redis-server 启动命令后加入 --slaveof {masterHost} {masterPort}3.执行slaveof {masterHost} {masterPort}断开复制在从节点上执行slaveof no one,从节点与主节点断开链接,并保留断开前的数据切换主节点对断开复制的节点,重新执行建立复制,实现切换主节点的操作,此时:从节点会清空数据,然后复制新主节点的数据拓扑一主一从主要用于故障转移,可只打开从节点的AOF功能,以提高主节点性能,但此时重启时从节点要断开与主节点的复制关系,以免清空数据。一主多从主要用于读占比比较大的场景,用从节点分摊主节点的读写压力树状结构通过引入中间层,降低主节点负载数据同步复制偏移量每次写入命令主从节点都会增加复制偏移量复制积压缓存区当主节点响应写命令时,不但把命令发送给从节点,页把命令写入复制积压缓存区全量复制流程1.一般在第一次建立链接和重启主节点导致主节点运行id发生变化后引起,如果是debug reload,运行id不会发生变化2.第一次建立链接后,因为从节点没有复制偏移量和主节点的运行id,会进行全量复制,并保存主节点此时的运行id和复制偏移量3.主节点执行bgsave保存rdb文件到本地,并将rdb文件发送给从节点,需要注意传输的总时间不能超过 repl-timeout(默认 60秒),否则从节点清空rdb文件,复制失败。4.在从节点接受rdb文件期间,主节点会将此时的写命令写入复制积压缓冲区,并累积偏移量5.从节点清空自身数据,加载RDB文件,加载完成后,如果开启AOF就马上重写部分复制流程1.一般在主从节点网络断开时间超过repl-timeout(默认60秒)时发生2.断开后主节点依然把数据写入复制积压缓存区(默认大小为1MB)3.重新链接后把复制积压缓存区的信息传输给从节点心跳1.主节点默认每隔repl-ping-slave-period (默认10)秒发送ping命令检验从节点是否链接正常2.从节点每隔一秒发送replconf ack {offset}命令,主动上报主节点自己的复制偏移量,检查数据是否丢失,如果丢失就从主节点的复制积压缓存区中拉取数据异步复制流程1.主节点接受处理命令2.命令结束后返回结果3.异步发送命令给从节点,从节点执行复制的命令问题定位与优化主从配置不一致1.从节点内存溢出,数据丢失:maxmemory与比主节点配置小造成,应该配置一致。全量复制1.全量复制消耗大,尽量在低峰时进行2.节点运行ID不匹配:主节点故障重启造成,可以升级从节点为主节点,防止从节点以为链接了新的节点而造成的全量复制3.复制积压缓冲区不足时,偏移量会不在主节点的复制积压缓冲区内,而造成全量复制,可以适当加大repl_backlog_size(默认1MB)单主节点复制风暴由大量从节点对同一主节点发起全量复制造成:会同时向多个从节点发送rdb文件,网络消耗太大,建议改为原拓扑结构为树状结构单机器复制风暴由一台机器部署很多个主节点故障造成:建议每台机器部署的主节点数目尽量少,提供主节点故障转移方案:哨兵,集群等。相关配置与命令1.设置复制:slaveof {masterHost} {masterPort}2.复制命令:slaveof {masterHost} {masterPort}3.断开复制:slaveof no one4.设置redis链接密码:requirepass5.设置节点为只读:slave-read-only 从节点默认为yes6.传输延迟机制:rep-disable-tcp-nodelay关闭时,无论产生的命令数据大小都会传给从节点开启时,会合并较小的tcp数据包从而节省宽带,网络环境差时推荐开启7.从节点心跳超时时间:repl-timeout默认60秒8.心跳检验间隔时间:repl-ping-slave-period 默认10秒9.执行复制:psync {offset} {runId}10.配置最大内存:maxmemory11.复制积压缓冲区大小:repl_backlog_size(默认1MB)Redis 阻塞问题如何发现问题1.客户端报JedisConnectionExpection异常2.使用CacheCloud进行管理内在原因API或者数据结构使用不合理解决方案1.通过慢查询日志slowlog get {n} 查询不合理的命令,改为低算法度的命令代替2.执行 redis-cli -h {ip} -p {port} --bigkeys 查看大对象,尽量用更合理的数据类型代替CPU饱和1.每秒请求次数过多:通过redis -cli --stat 观察requests数量,如果一个redis实例每秒有好几万次请求,建议做水平扩展优化2.使用了耗时高的命令:通过info commandstats 查看user_per查看命令平均耗时,找出耗时高的命令,把耗时高的命令换成低的命令,或者放宽zipList条件持久化阻塞解决方案见 Redis 持久化-问题定位与优化外在原因CPU竞争1.Redis是CPU高密集应用,建议不要和其他CPU密集应用部署在同一台服务器2.对与开启了持久化或参与复制的主节点,建议不要绑定CPU,让其可以充分利用多核CPU内存交换即防止把内存数据换出到硬盘问题定位:1.查询Redis进程号:info server
grep process_id2.根据进程号查询内存交换信息:cat /proc/{process_id}/smaps
grep Swap问题优化:1.保证机器内存充足2.设置正确的redis最大内存maxmemory3.降低系统使用swap优先级网络问题1.网络闪断:尽量避免,异地机房调用2.Redis链接拒绝:适当增加maxclients最大连接数,尽量采用连接池方式3.连接溢出too many open files:通过unlimit -n {连接数量},适当增加连接数量4.backlog队列溢出:适当增加redis backlog的长度(默认511)5.网络延迟:增加宽带,减少大对象传输相关配置与命令查看慢查询日志:执行slowlog get {n} n为查询最近日志的条数查看大对象:执行 redis-cli -h {ip} -p {port} --bigkeysRedis 内存详解内存使用统计1.利用info memory 查看详见Redis 数据类型与API-info命令详情2.重点关注:used-memery_rss和used_memery以及他们的比值memory_fragmentation_ratio3.memory_fragmentation_ratio>1,存在内存碎片4.memory_fragmentation_ratio<1,存在内存交换内存消耗划分Redis内存知识要点内存碎片1.内存碎片定义:采用固定范围的空间存储对象,剩余的空间为内存碎片2.正常碎片率在1.03左右3.容易产生内存碎片的行为:频繁更新操作;大量将过期4.优化内存碎片的方案:数据对齐,尽量用数字类型或者固定长度的字符串;安全重启,重启后内存碎片会得到整理子进程内存消耗子进程内存消耗主要在AOF/RDB重写时创建子进程产生。优化方案:1.虽然redis的子进程不需要消耗1倍的父进程,但是也要预留一些内存空间2.设置sysctl vm.overcommit_memory=1,允许内核可以分配所有物理内存3.查看当前系统是否开启THP,建议关闭,防止copy-on-write期间内存过度消耗删除过期键策略1.惰性删除:在客户端读取过期键时把键删除,如果过期键一直没有被访问,内存将得不到及时释放2.定时任务删除:Redis执行定时任务,默认10秒执行一次,每次随机删除20个键,如果其中超过25%的都过期,循环执行。内存溢出策略1.noeviction:默认策略,不删除数据,不再响应写操作,报OOM command not allowed when used memory 异常2.volatile-lru:根据LRU(最后一次访问时间)算法删除超时的键,如果没有可删除对象,返回noevicition策略3.allkeys-lru:根据LRU算法删除键,不过键是否过期4.allkeys-random:随机删除键,不过键是否过期5.volatile-random:随机删除过期的键6.volatile-ttl:删除最近要过期的键,如果没有返回noeviction策略内存优化1.缩减键值长度2.Redis维护着[0-9999]的整数共享对象池,因此尽量使用整数对象(共享对象池设置LRU时无法使用)3.尽量减少字符串append操作(append操作为了防止不停的append会给一个比较大的内存空间),降低预分配带来的内存碎片话4.Redis的内部编码类型转换不可逆(只能重启的时候可以),尽量减少内存少的编码到大内存编码的转换5.当集合(set)类型,元素都是整数,且数量不超过set-max-inset-entries时,内部编码为inset,可以减少内存消耗6.控制键的数量,可以用hash代替sting,当hash内部编码为ziplist时可以大幅度减少内存,虽然耗时会增加,当value字节小时ziplist耗时逐渐降低相关配置与命令动态修改Redis内存上限:执行 config set maxmemory溢出策略:maxmemory-policyzipList编码转换控制-最大值:{type}-max-ziplist-valuezipList编码转换控制-最多元素:{type}-max-ziplist-entriesInset编码转换控制:set-max-inset-entries (元素需都为整数)Redis sentinel(哨兵)为什么用redis sentinel实现主从复制,主节点故障时可以自动检查,并推举它的其中一个从节点做主节点,解决主从复制的高可用问题故障转移流程1.主节点发生了故障2.多个sentinel节点对主节点故障达成一致3.选出一个sentinel为领导者负责故障转移4.领导者选取其中一个从节点升级为主节点安装和部署部署步骤1.部署redis主从复制2.配置sentinel节点:Sentinel节点可以配置多个,最好配置奇数个,每个节点除了端口号其他配置一样在redis.conf文件中加入:sentinel monitor {master-name} {ip} {port} {quorum} #master-name为主节点别名,{ip} {port}为监控的主节点ip和port,quorum代表至少要quorum个sentinel节点同意才判定客观下线,一般sentinel节点数的设一半加1sentinel down-after-milliseconds {master-name} {times} #用ping的方式判断当redis节点与其余节点是否可达,超过times(单位毫秒)不可达,认定主观不可达sentinel parallel-syncs {master-name} {nums} #每次有nums从节点对新主节点进行复制sentinel failover-timout {master-name} {times} # times为故障转移的超时时间如果sentinel有多个主节点,在redis.conf继续加入其他主节点就可:sentinel monitor {master-name-2} {ip} {port} {quorum}sentinel down-after-milliseconds {master-name-2} {times}sentinel parallel-syncs {master-name-2} {nums}sentinel failover-timout {master-name-2} {times}3.启动sentinel 节点:使用redis-sentinel {redis.conf} 启动或者使用redis-sever {redis.conf} --sentinel 启动4.确认启动是否成功:redis-cli -h {sentinel节点ip} -p {sentinel 节点 port} info Sentinel部署技巧1.sentinel节点不应该部署在一台机器上2.部署至少三个奇数个的sentinel节点3.建议让一套sentinel监控一个业务的多个主节点集合实现原理三个定时监控任务1.每个10秒sentinel向主节点发送info命令,获取主节点的从节点信息2.每隔2秒sentinel进行交换信息,并通过_sentinel_:hello了解其他节点3.每个(down-after-milliseconds秒(默认1秒)sentinel节点向其他sentinel节点和主节点,从节点发送ping请求,检查是否可达主观下线和客观下线1.主观下线:通过上述3中的定时任务,判断节点是否可达,如果不可达时间超过down-after-milliseconds没有回复,判断为主观下线2.客观下线:主观下线数量数超过{quorum}(通常为所有sentinel节点的一半)数量,判断主节点为客观下线领导者sentinel节点选举1.在判断主节点客观下线后,每个sentinel节点通过sentinel is-master-down-by-addr 询问自己是否可以是领导者2.通过raft算法(每个节点只能投一张票的算法)决定谁是领导者:节点收到投票请求后会根据以下情况决定是否接受投票请求(每个 follower 刚成为 Candidate 的时候会将票投给自己):请求节点的 Term 大于自己的 Term,且自己尚未投票给其它节点,则接受请求,把票投给它;请求节点的 Term 小于自己的 Term,且自己尚未投票,则拒绝请求,将票投给自己。一轮选举过后,正常情况下,会有一个 Candidate 收到超过半数节点(N/2 + 1)的投票,它将胜出并升级为 Leader。然后定时发送心跳给其它的节点,其它节点会转为 Follower 并与 Leader 保持同步,到此,本轮选举结束。注意:有可能一轮选举中,没有 Candidate 收到超过半数节点投票,那么将进行下一轮选举。故障转移1.按步骤选出从节点:过滤ping命令超过5秒没回应,与主节点失联超过down-after-milliseconds*10秒的节点->选择slave-priority高的优先级->选择复制偏移量大的从节点->选择runid最小的从节点2.升级选出的从节点为主节点3.原来的主节点恢复联系后将其转为新主节点的从节点实现高可用读写分离1.从节点可做主节点的备份,实现故障转移2.从节点可以拓展主节点的读能力3.但是sentinel只会对从节点进行主观下线操作,不会做故障转移。因此需要配置多从节点,并实行实时监控来实现高可用的读写分离相关配置与命令动态调整sentinel配置:执行sentinel set ,如sentinel set mymaster quorum 2查询主节点统计信息:sentinel masters查询指定主节点统计信息:sentinel masters {master-name}指定主节点的从节点统计信息:sentinel slaves {master-name}指定主节点的sentinel节点集合:sentinel sentinels {master-name}指定主节点的ip和端口:sentinel get-master-addr-by-name {master-name}强制故障转移指定节点:sentinel failover {master-name}查询当前节点主观下线个数:sentinel ckquorum {master-name}取消当前sentinel对指定节点的监控:sentinel remove {master name}设置从节点优先级:slave-priorityRedis cluster(集群)Redis cluster数据分区Redis cluster采用虚拟槽分区,所有节点映射到0-16383整数槽内。计算公式:slot=crc16(key)&16383,没个节点维护一部分槽及槽所映射的键值数据:集群功能限制1.key批量支持有限,mset,mget无法执行2.如果key在不同的节点,无法执行事物操作3.Hash,list等键值不能映射到不同的节点4.不支持多库5.主从结构只能支持一层集群搭建准备节点1.划分为三个目录:conf,data,log用来同一存放配置,数据和日志2.修改redis.conf文件如下:#节点端口,{port}为端口号port {port}#开启集群模式cluster-enabled yes#节点超时时间,单位毫秒Cluster-node-timeout 15000#集群内部配置文件,第一次启动会生成一份cluster-config-file “nodes-6379.conf”3.按照2配置完所有节点后,启动所有节点节点握手1.在一个节点下对所有其他节点执行:cluster meet {ip} {port},完成节点握手2.通过cluster nodes 查看节点是否已经通过握手组成集群分配槽1.为每个主节点分配槽:执行cluster addslots 如:Redis-cli -h 127.0.0.1 -p 6379 cluster addslots {0…5461}Redis-cli -h 127.0.0.1 -p 6380 cluster addslots {5642…10922}Redis-cli -h 127.0.0.1 -p 6381 cluster addslots {10923…16383}为主节点添加从节点2.在从节点下,通过cluster replicate {nodeId}命令为主节点添加从节点,其中nodeId为主节点的id,可以在主节点下通过cluster nodes 命令查到使用redis-trib.rb搭建集群1.下载并安装redis-trib.rb2.准备节点3.执行redis-trib.rb create --replicas 1 127.0.0.1:6841 127.0.0.1:6842 127.0.0.1:6843 127.0.0.1:6844 127.0.0.1:6845 127.0.0.1:6846其中 1 表示为为每个主节点分配1个从节点,按照顺序决定主节点,主节点为前面3个节点通信通信流程Redis集群采用gossip进行通信,流程为:1.每个节点单独开辟一个tcp接口,端口号为节点来端口加上100002.每个节点在固定周期选择几个节点发送ping消息3.接受到瓶消息后节点发送pong做为响应Gossip消息1.Gossip消息分:meet消息:通知新节点加入。ping消息:检查节点是否在线,交换彼此信息pong消息:接收到ping和pong消息是回应pong确认接收到了信息fail消息:当一个节点下线时发送fail消息,广播其他节点自己已下线2.节点选择:ping消息默认每秒执行10次,随机选取5个节点,找出其中最久没有通信的节点进行通信。如果发现有大于cluster_node_timeout/2的时间没有通信,则立刻发送ping消息。在redis 集群中节点数量并不是越多越好,因为gossip的消息体包含一定数量的其他节点信息,会增加通信压力。扩容集群1.把新节点加入集群在任意节点执行:cluster meet {新节点ip} {新节点port} (线上建议用redis-trib.rb add-node因为cluster meet不会检查新节点是否已经加入)2.把槽分配给新节点,老节点移出一些槽,达到槽平均分配的目的。这个流程直接执行会比较繁琐建议用 redis-trib.rb rehard 命令执行收缩集群1.把要下线的几点的槽分配给其他节点:执行命令redis-trib.rb rehard {被迁移节点ip} {被迁移节点port}2.忘记节点,停止对要下线节点发送Gossip消息:执行命令 redis-trib.rb del-node {被迁移节点ip:被迁移节点port} {被迁移节点id}3.下线节点请求路由1.键通过crc16(key)&16383计算得到对应槽位2.通过槽位找到对应节点,如果刚好是当前节点就直接完成操作3.否则进行重定向,由客户端根据接受到的moved信息再次发送请求,完成操作故障转移故障发现1.主观下线:ping最后一次通信成功时间超过cluster-node-timeout判定为主观下线2.客观下线:一个节点判定另一个节点主观下线后,将通过gossip向其他节点群发pfail通知3.其他节点接受到通知后判定节点是否主观下线4.计算主观下线成立的节点数量,如果超过一半的数量认定主观下线,则客观下线生效(需要在cluster-node-timeout*2的时间内完成,否则客观下线会失败,因此cluster-node-timeout的值不能太小)5.通知所有节点该节点主观下线6.通知该节点的从节点触发故障转移流程故障恢复1.通过从节点和主节点的断线时间是否超过cluster-node-timeoutcluster-slave-validity-factor判断,从节点是否有资格做故障转移2.在有资格的节点中,复制偏移量大的节点优先发起选举3.主节点对从节点点进行投票,每个主节点只有一张票4.当有一个从节点超过半数主节点投票时(故障主节点的数量也算,集群主节点最好分布在3台物理机以上,防止选不出从节点),选择为主节点;如果在cluster-node-timeout2节点时间内没有选举出从节点,就判断选举失败5.选出从节点后,该从节点变为主节点6.主节点的槽被分配到从节点7.向集群广播该从节点升级为主节点的信息。集群运维注意事项1.16384个槽必须全部分配,否则报错2.Gossip宽带消耗随着节点数而增加,建议控制节点数在1000以内3.防止数据倾斜:防止节点与槽分配不均防止不同槽对应键数差异太大,一般由hash_tag引起(当一个key包含 {} 的时候,就不对整个key做hash,而仅对 {} 包括的字符串做hash。如user:{user1}:ids)防止集合对象含有大量元素防止内存相关配置不一致4.防止请求倾斜Redis云平台CacheCloudcacheCloud为redis的监控运营平台,可以实时对redis集群情况进行监控,并实现可视化的redis部署和操作。详情见:https://blog.csdn.net/xiaofengbuhuimai/article/details/90449779相关配置与命令节点握手:执行 cluster meet {ip} {port}查看节点握手状态情况:执行cluster nodes查看集群运行情况:cluster info信息交换频率:cluster-node-timeout(默认为15秒,即主观下线时间,主观下线传播时间<=cluster-node-timeout/2,从节点有效时间cluster-node-timeoutcluster-slave-validity-factor ,p判断客观下线有效时间:cluster-node-timeout2,选举从节点时间:cluster-node-timeout*2)迁移槽:执行 redis-trib.rb reshard忘记节点:执行redis-trib.rb del-node {被迁移节点ip:被迁移节点port} {被迁移节点id}从节点有效因子:cluster-slave-validity-factor (默认10)Redis 缓存设计缓存键删除策略1.在内存过大时,根据maxmemory-policy算法剔除2.设置键的超时时间剔除3.根据业务场景,由客户端主动删除穿透优化即访问不存在的key,导致直接访问数据库的问题的优化1.对数据库不存在的key,保存null在redis中,并设置一个较短的过期时间2.利用bitmaps实现布隆过滤器,把key设置在bitmaps中(由算法工程师实现),对不存在的key实现拦截无底洞优化即增加节点也不能达到优化的问题的优化1.利用pipeline命令,实现多个命令一次执行2.并行IO3.利用hash_tag把key强行分配到同一个节点雪崩优化即对缓存发生故障的情况进行的优化1.保证redis的高可用性,多准备备用节点。2.为redis失败,在业务层面上设计降级方案3.提前演练热点key重建优化即对访问频率特别高的key进行优化1.互斥锁,只让一个线程去完成查询数据库把值放返回缓存的操作2.缓存层面设计key不过期,在逻辑层面设计一个key的过期时间,用客户端的一条单独线程去对key进行更新的操作}
母乳太多怎么保存1  一、母乳太多,一定要及时吸出  如果母乳太多,每次在宝宝吃完之后都要及时使用**器吸出,这样可以避免宝妈积奶,从而更好地保护胸部,而且母乳如果长时间憋在体内,会导致回奶,以后母乳就会越来越少,甚至不够宝宝吃。不少宝妈都觉得宝宝吃饱之后,多余的母乳可以一直存在身体内,其实这种做法对自己的伤害非常大,不仅母乳越来越少,还会导致积奶,从而引起各种胸部的问题。  二、母乳不同温度,保存时间不同  母乳吸出来之后是有一定的保存期的,如果在室温下,最多不能超过30分钟,如果放在冰箱的保鲜区,储存时间可以达到6~8小时,如果放在冷冻区,就能够保存3个月。  可以根据自己的需要,把多余的母乳进行适当方式的保存,但是保存母乳一定要使用专用的母乳保鲜袋,避免因为容器不干净而污染母乳。  母乳保存的时候,宝妈需要在保鲜袋上面标注好日期,将来给宝宝喝的时候,要从日期比较长的开始喝,避免因为不知道日期而造成混乱,或者导致母乳放过期。  三、母乳解冻需谨慎,加热不当损失营养  母乳在冰箱中冷冻之后,如果需要给宝宝喂奶,可以通过温水加热的方式把母乳融化,然后加热到40度左右,就可以给宝宝喝了,切忌温度不能太高,否则会导致母乳中的蛋白质分解,从而损失母乳中的营养。  母乳解冻的时候尽量使用恒**热器,只需要把母乳连袋放入,就能够最大程度保存母乳的营养,而且还不会烫伤宝宝。母乳太多怎么保存扩展阅读母乳太多怎么保存(扩展1)——母乳应该怎么挤母乳应该怎么挤1  如果由于自身的某些原因不能哺乳,或是宝宝由于某些问题吸吮能力降低,无法自主吸吮**的话,妈妈就要将奶水挤出来再喂宝宝。  在**前,首先要做好准备工作  将双手用肥皂和水**,——用清水清洁后用热毛巾热敷5-10分钟以助于输乳管内乳汁的流出;采用舒服的姿势并放松身心,轻柔地按摩**数次;准备好**器、奶瓶、乳垫、奶瓶保温盒和干净的纱布。  如果是妈妈自己**的话,将容器靠近**,拇指在上,其余四指在下面托住**,握成一个C型,将拇指和食指及中指放在——后方约2.5-4厘米处;做有规律的一挤放的动作,指腹向——方向滚动,同时将手指的压力从中指移动到食指,将乳汁推挤出来。挤压的区域是以——为中心,半径约3厘米的区域,挤压过程中要避免太深或太用力,以免阻塞输乳管。注意不要挤压——,因为挤压或拉——就像婴儿只吸吮——一般,并不会促使奶水流出。  每次**的时间以20分钟为宜  双侧**轮流进行,刚生产完奶水不太多的产妇可以适当延长**的时间。正确的挤乳姿势**不会有疼痛,如果感觉疼痛的.话就表示动作有误,需要重新调整大拇指与食指的位置。  对于一些**肿胀疼痛严重的妈妈来讲,由于——紧绷,用手**很困难,可以用热瓶**法。采用这种方法时,先用一个容量为1升的大口瓶(瓶口的直径不应小于2厘米),用开水将瓶装满,数分钟后倒掉开水用毛巾包住拿起瓶子,将瓶口在冷水中冷却下:将瓶口套在——上,不要漏气;当瓶内形成负压,——被***内后,奶水就会慢慢流入瓶内;等乳汁停止流出后,轻轻**瓶子周围的皮肤,取下瓶子,完成**还可以用**器**。  **器的使用方法是  挤压一下**器后半部的橡皮球,使**器呈负压,将**器的广口罩在——周围的皮肤上,不让其漏气,放松橡皮球,乳汁就会慢慢地流入**器容器内。在使用**器时,应在每次使用前做好**器的消毒工作。  无论用何种方法**,每次**时,每边**至少要挤3-5分钟,直到奶流量减慢然后再挤另一側,如此反复数次,直到乳汁不再流出为止。每3~4小时就应挤一次奶,以保证泌乳的正常。另外每次**的时间最好选在一天中感觉乳汁最盛的时间,一般多为早上。母乳太多怎么保存(扩展2)——牛奶该怎么保存?牛奶该怎么保存?1  牛奶,是最古老的天然饮料之一,对人体也有很多的好处。但在保存牛奶上也要十分注意,避免喝到过期或者坏了的牛奶。而保存牛奶要注意以下几点:  1、鲜牛奶应该立刻放置在阴凉的地方,最好是放在冰箱里。如果不将鲜牛奶放置在阴凉的地方或者冰箱里,鲜牛奶很容易在高温下被破坏它的营养成分,不适宜人们的饮用。  2、不要让牛奶曝晒在阳光下或接受灯光的照射。日光、灯光均会破坏牛奶中的数种维生素,同时也会使其丧失芳香,对牛奶的保存有不利影响。所以如若要保存好牛奶,切记要将牛奶远离阳光和灯光的照射。  3、牛奶放在冰箱里,瓶盖要盖好,以免他种气味串入牛奶里。如果牛奶的瓶盖没有盖好,其他气味很容易串入牛奶里,破坏牛奶原有的芳香和营养,不利于牛奶的保存。  4、如果牛奶倒进杯子、茶壶等容器,如若没有喝完,应盖好盖子放回冰箱,切不可倒回原来的瓶子。牛奶在倒进其他容器之后,就不能将其倒回远离的瓶子里面,如果倒回去容易导致牛奶的变质,即使仍将其放置在冰箱内。  5、过冷对牛奶亦有不良影响。当牛奶冷冻成冰时,其品质会受损害,破坏牛奶原有的营养价值。因此,牛奶不宜冷冻,放入冰箱冷藏即可。  牛奶是一种对人体很有好处的天然饮料,但也要在保存好的情况下才有它的营养价值,所以在日常保存牛奶上,要切记以上几点,以免牛奶的品质受到损害。母乳太多怎么保存(扩展3)——莲雾怎么保存莲雾怎么保存1  常温下保存:  常温保存是莲雾比较常见的一种保存方法,它是一种热带水果,所以保存时间并不长,常温保存适合少量莲雾保存。因为莲雾中含有较多的糖类物质以及水分,所以比较容易滋生细菌而腐烂,如果莲雾在常温下保存得比较好,一般可以保存5-7天左右,而且在保存过程中,其中的水分会有所流失,所以建议尽早食用,以免影响口感。  1、将莲雾表面的水分擦干,然后装入塑料果盒中。  2、将果盒放在阴凉通风处保存即可。  3、注意避免潮湿,避免阳光直射。  冰箱冷藏保存:  冰箱冷藏是家庭保存莲雾最适宜的保存方法,因为冰箱中的低温环境可以很好的抑制微生物的繁殖以及生长,能在一定程度上延长莲雾的保存时间,莲雾放冰箱冷藏的话,一般可以保存8-10天,如果保存得比较好,也可以保存约半个月。  1、将莲雾放在保鲜盒中,或者用报纸包好。  2、然后置于冰箱保鲜层保存即可。  3、注意与其他食物分开存放,以免串味。  制成干果保存:  将莲雾制成干果保存的话,保存时间就会长很多,一般可以保存半年左右,适合大量莲雾保存,而且制成干果后会有一种新鲜莲雾没有的口感。  1、将莲雾清洗干净,尤其是根部。  2、然后将洗好的莲雾切成片状。  3、放在阳光下晒干,然后再置于烤箱中烘干水分。  4、最后将莲雾果干放在玻璃罐中,放在阴凉处保存即可。  新鲜莲雾保存温度:  4、8-10摄氏度。 莲雾是一种热带水果,喜暖畏寒,不耐低温,而且对温度比较**,一般建议放在8-10摄氏度的环境下保存,温度过低,果肉容易冻坏;温度过高,果肉容易腐烂变质。而且莲雾在保存的过程中,其中的水分会有所流失,从而会影响莲雾的口感,所以建议买回来的莲雾最好尽早食用。母乳太多怎么保存(扩展4)——刺梨要怎么保存3篇刺梨要怎么保存1  刺梨为蔷薇科植物缫丝花的果实,是贵州、鄂西等山区的天然野果,四至六月开粉红色、红或深***.花,夏花秋实。果实多为扁圆球形,横径一般为二至四厘米,八至九月果实成熟,黄色,有时带红晕。果肉脆,成熟后有浓芳香味。果皮上密生小肉刺,俗称之为“刺梨”。果实内含有丰富的维生素C,被称为“维C之王”。单宁五百至一千毫克;含酸一克左右;总糖量一般四克左右。  主要营养:维生素B、维生素C、胡萝卜素、苹果酸、柠檬酸食疗功效:养胃健胃、提高免疫力力、排毒解毒、开胃消食、祛斑、养颜适宜人群:一般人群均可食用刺梨。特别是想减肥的人群。禁忌人群:脾胃虚寒,慢性腹泻者勿食刺梨。  新鲜刺梨比较少见,因为它只长在我国西南地区的野外,现在还不能人工栽植,因此产量少,同时也难以储存,所以我们见得最多的是刺梨干。不过在刺梨成熟的季节去到云南、贵州等地还是可以买到鲜刺梨的。母乳太多怎么保存(扩展5)——夏天中药怎么保存-夏天中药需要放冰箱吗3篇夏天中药怎么保存-夏天中药需要放冰箱吗1  1常温存放  如存放时间较短,可将中药放凉后,倒入保温瓶,在室温下保存。或者倒入密闭的`容器中,放置在阴凉处保存。  2冷藏保存  如果两次服药时间间隔太长,则可将药液倒入密闭容器中,放进冰箱冷藏保存。保存容器可选玻璃制品、瓷器,但不要用塑料、铁、铝制品。  夏天中药能放多久  自己煎的中药,当天要喝完。  医院或者药店代煎的中药一般采用真空包装,放在冰箱冷藏保存,最长可放7天。如果药液袋鼓起或者药液变味、有气泡时,药液很可能已经变质,最好不要服用。  夏天隔夜中药能喝吗  隔夜的中药最好不要喝。  夏天气候炎热,药液容易变质,即使放在冰箱,也不能保证无菌环境,隔夜的中药药效已**降低,且有被细菌污染的可能,最好不要喝。夏天中药怎么保存-夏天中药需要放冰箱吗2  1常温存放  如存放时间较短,可将中药放凉后,倒入保温瓶,在室温下保存。或者倒入密闭的容器中,放置在阴凉处保存。  2冷藏保存  如果两次服药时间间隔太长,则可将药液倒入密闭容器中,放进冰箱冷藏保存。保存容器可选玻璃制品、瓷器,但不要用塑料、铁、铝制品。  夏天中药能放多久  自己煎的中药,当天要喝完。  医院或者药店代煎的'中药一般采用真空包装,放在冰箱冷藏保存,最长可放7天。如果药液袋鼓起或者药液变味、有气泡时,药液很可能已经变质,最好不要服用。  夏天隔夜中药能喝吗  隔夜的中药最好不要喝。  夏天气候炎热,药液容易变质,即使放在冰箱,也不能保证无菌环境,隔夜的中药药效已**降低,且有被细菌污染的可能,最好不要喝。母乳太多怎么保存(扩展6)——考研**大纲变动太多怎么应对 (菁选2篇)考研**大纲变动太多怎么应对1  时光如水,日月如梭,2018考研**大纲已正式公布。矛盾具有特殊性,**这门课由于其学科特色,其无疑是考研公共课中大纲变动最大的科目,这要求2018考研考生在后期复习的关键期需要针对不同情况理性应对其变化:  首先,对于新大纲已经删除的考点,我们后期不需要复习。这是因为考试大纲是考试命题和考生复习的依据和范围,考试试卷的试题是严格按照考研大纲命制的。比如,马原中关于实践的本质、基本特征与基本形式、所有制和所有权、认识过程中的理性因素和非理性因素、科学技术的含义等考点已经删除,2018考研考生后期不需要再复习此类考点。  其次,对于新大纲新增加的考点,我们后期需要重点复习。对于考生而言,新增加的考点价值很大,因为通过分析历年真题我们发现这些考点本年度比较容易命题。比如,毛中特中的统筹推进“五位一体”总体布局、保护生态环境就是保护生产力、加强****等;史纲中的“两个**之命运、*****命题的提出、进步文化运动、抗美援朝战争”等,对于此类新大纲新增加的考点无疑是2018考研考生需要着重复习的地方。  再次,对于新大纲略微变动的考点,我们后期了解此变化既可。比如,马原17年大纲中“事物发展过程中的肯定和否定”变为“事物发展过程中的肯定和否定及其相互转化”、“资本**经济危机的本质特征、根本原因、具体表现和周期性”变为“资本**经济危机”等其实变动甚小,对于此类考点,2018考研考生了解即可。  最后,对于知识点位置发生变化的考点,我们后期也是了解此变化既可。因为这些内容实际上并没有变。比如,毛中特中“树立创新、协调、绿色、开放、共享的发展理念”由原来第六章第二节****的根本任务之下的内容调整到第一章第三节**特色****理论体系之下,对于此类考点,2018考研考生也是了解其变动即可。  总之,2018考研考生在后期复习中需要理性应对大纲新变动,着重注意新增加的大纲考点。考生在后期的复习中如果能够把握正确的方向,同时加上自身的努力,最后胜利一定会向我们招手!考研**大纲变动太多怎么应对2  社会存在指社会的物质生活过程,其核心是物质资料的生产方式。社会意识指社会的精神生活过程,广义指社会的一切意识要素和观念形态,包括社会心理和社会意识形式;狭义则专指关于社会关系的意识,即****。社会存在是第一性的,它决定社会意识,社会意识反映社会存在并对社会存在起促进或阻碍的作用。  社会存在和社会意识的辩证关系原理  一、社会存在决定社会意识,社会意识是社会存在的反映。  第一,社会存在的性质决定社会意识的性质。  从整个社会整体看,各种形式的社会意识虽各不相同,但作为社会意识却有其共同点,社会意识的内容根源于社会存在,是社会存在的反映。 从单个人和集团看,一个人具有什么样的社会意识是由其所处的社会存在的具体状况决定的。不同阶级的社会意识是由不同阶级的社会地位决定的.。  社会意识来源于社会存在,有什么样的社会存在就会有什么样的社会意识与之相适应。社会意识具有鲜明的时代性和阶级性。  第二,社会存在的变化决定社会意识的变化。  从社会意识总体看,随着社会存在的变化,人们的社会意识会发生或早或迟,或快或慢,或大或小的变化。  从某一观念的产生、发展和消失看,只能由社会存在的实际变化的状况来解释。  二、社会意识对社会存在具有能动的反作用  不同性质的社会意识对社会存在起着不同性质的作用。先进的、**的、科学的社会意识对社会存在的发展起着积极促进作用;反之,落后的、**的、非科学的社会意识对社会存在的发展起着重大的阻碍作用。  社会意识具有相对的**性  社会存在的变化最终会引起社会意识的相应变化,但是社会意识的变化与社会存在的变化并非一定同步进行,意识在思维层面也有自己的发展规律,思维的深度和广度可以与现实的社会存在相对的分离,因此社会意识有时候会滞后于社会存在的变化,有时候也会超前的对未来的社会形式进行思考和规划。  社会存在的形式  社会存在最主要的形式是经济基础与上层建筑。生产力的发展使生产力和生产关系发生了变化,必定会使经济基础和上层建筑发生相应的变化。这样的社会存在又会产生出新的社会意识,新的社会意识又反作用于社会存在,使社会按照新的发展模式发展。母乳太多怎么保存(扩展7)——肉丸怎么保存才新鲜 (菁选2篇)肉丸怎么保存才新鲜1  方法一:  我们可以复放在碗或者是盘子里然后再用塑料袋装起来,接着放在冰箱冷冻室里即可,但是需要注意肉丸不能制放的太久,只适合短期存放否则太久容易变质。  方法二:  我们可以将新鲜丸子是蒸熟之后将它阴干,如果是夏天在常温下可以保存3天左右,冬天可以保存更长的时间。或者我们在蒸熟之后放凉然后包装进行抽真空保存,这样保存的时间更长而且风味保留更佳。  方法三:  我们还可以将肉丸包装清理干净,如果没有包装可以放入保鲜盒。然后我们将包装好的肉丸放入冰箱冷冻室即可,如果肉丸已经放了一段时间了,时间请尽量不超过三天的可以将肉丸加热后再保存。  以上就是刚做的新鲜肉丸子该如何保存的具体解决办法,相信大家通过上述内容的介绍和了解,都能够很快的学会如何进行保存刚做好的新鲜肉丸子。肉丸怎么保存才新鲜2  做好的肉丸保存方法:  将肉丸包装清理干净,如果没有包装可以放入保鲜盒;包装好的肉丸放入冰箱冷冻室时候,注意冰箱要保持-18℃的温度条件。  做好的肉丸子应熟制后冷却至常温时入冰箱保存,保存时间不宜久,最好以原汤浸泡着冷藏,以不结冰为度,时间请尽量不超过三天为好。虽然结冰的话一个星期也不会变味,但是里面的营养物质可能会流失的。  扩展资料:  肉丸保存的注意事项:  包完的肉丸不宜堆放,会造成表皮的粘连,可以用淀粉隔离。但更好的办法则是将其放入冰箱的冷冻室(结冰层)。  带肥肉的猪肉在高温的蒸煮下会变成猪油并包含在肉丸内部,因为芋头的'滑滑的特性,内部油水不会渗漏出来,在内部通过高温使陷料充满了鲜香的特点。因此根本不会感觉到油腻。  但因为五花肉不一定都能化为肥油,因此采用瘦肉加食用油的方案替代肥肉可以避免挑食者对肥肉的厌恶之情。}

我要回帖

更多关于 不回复领导消息好吗 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信