美文网首页
Redis粗粒度使用记录

Redis粗粒度使用记录

作者: Zzmi | 来源:发表于2019-02-20 13:53 被阅读0次

Redis是啥?

 -- Redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,Redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。Redis帮助开发者对一台机器的内存进行操作

Redis安装(默认端口6379)

  • yum安装
    配置文件:redis-server /etc/redis.conf

yum install redis

  • 源码包安装
    配置文件:/src/redis-server redis.conf

wget http://download.redis.io/releases/redis-x.x.x.tar.gz
tar xzf redis-x.x.x.tar.gz
cd redis-x.x.x
make    # 编译

Redis 特点:

a. 持久化
- RDB(快照):是 Redis 默认的持久化方案。在指定的时间间隔内,执行指定次数的写操作,则会将内存中的数据写入到磁盘中。即在指定目录下生成一个dump.rdb文件。Redis 重启会通过加载dump.rdb文件恢复数据。
优点:
1 适合大规模的数据恢复。
2 如果业务对数据完整性和一致性要求不高,RDB是很好的选择。
缺点:
1 数据的完整性和一致性不高,因为RDB可能在最后一次备份时宕机了。
2 备份时占用内存,因为Redis 在备份时会独立创建一个子进程,将数据写入到一个临时文件(此时内存中的数据是原来的两倍哦),最后再将临时文件替换之前的备份文件。
  所以Redis 的持久化和数据的恢复要选择在夜深人静的时候执行是比较合理的。

- AOF(日志):Redis 默认不开启。它的出现是为了弥补RDB的不足(数据的不一致性),所以它采用日志的形式来记录每个写操作,并追加到文件中。Redis 重启的会根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作。
优点:数据的完整性和一致性更高
缺点:因为AOF记录的内容多,文件会越来越大,数据恢复也会越来越慢。

b. 单进程、单线程
使用 I/O 多路复用技术,让单个线程高效的处理多个连接请求(减少了网络IO的时间消耗。属于非阻塞IO)
优点:
1、代码更清晰,处理逻辑更简单
2、不存在多进程或者多线程导致的切换而消耗CPU
3、不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为可能出现死锁而导致的性能消耗
缺点:无法发挥多核CPU性能。但可以通过在单机开多个Redis实例来完善

c. 5大数据类型(注意:redis操作时,只支持第一层:list,dict,...不支持嵌套)

redis={
  k1: '123',    # 字符串
  k2: [1,2,3,4,4,5,3,5],    # 列表/数组
  k3: {1,2,3,4},    # 集合
  k4: {name: xxx, age: 12},    # 字典/hash
  k5: {('aa', 11), ('bb', 22), ('cc', 33)}    # 有序集合
}

1、Python中Redis五类数据类型操作注意事项

1.1、字典/Hash 操作(慎重使用hgetall,优先使用hscan_iter)

问题:如果redis的k4对应的字典中有1000w条数据,请打印所有数据

# 方法a:不可取,从redis取到数据后,服务器内存无法承受,会爆栈
result = conn.hgetall('k4')
print(result)
# 方法b:正确做法,每100条取一次,通过生成器返回
result = conn.hscan_iter('k4', count=100)
for item in result:
  print(item)

相关文章

  • Redis粗粒度使用记录

    Redis是啥?  -- Redis是一个key-value存储系统。和Memcached类似,它支持存储的val...

  • 6.Shiro授权管理

    1.授权:给身份认证通过的人,授予他可以访问某些资源的权限。 2.权限粒度:分为粗粒度和细粒度。 粗粒度:对use...

  • 上卷和下钻

    上卷 数据的汇总聚合,细粒度到粗粒度的过程,会无视某些维度 下钻 数据明细,粗粒度到细粒度的过程,会细化某些维度 ...

  • 用纸笔开始时间记录(新手神器)

    开始柳比歇夫时间记录法初期一定会遇到的问题:记录的颗粒度是粗还是细?粗了觉得记录没效果,太细又觉得繁琐? 其实花太...

  • Shiro2-权限管理解决方案

    什么是粗粒度和细粒度权限控制 粗粒度权限管理: 对资源类型的权限管理. 比如:菜单 URL链接 用户添加页面 ...

  • Redis 基础概念和命令

    Redis 是什么 为什么使用Redis 速度快 Redis的时间颗粒度一般是微秒,慢查询的默认值是10 000微...

  • 05 死锁

    相对于上一节中使用XXX.class粗粒度的锁,可以使用细粒度锁提升性能。 首先转账业务的资源:转出账户,转入账户...

  • Mesos shuffle service unusable i

    报错提示: spark1.6之中,mesos粗粒度模式下为了使用动态 executor 机制,开启了MesosEx...

  • Redis 跳表记录

    redis跳表简单理解: 一种基于链表的索引 索引的本质就是空间换时间,跳跃表原理可概括为:维护多个格外的粗粒度链...

  • 2个性质和1个结论

    做个记录, 1,Isx,y -Ix,y=I(s,y)|x 讨论: 1) x~粗粒度时,求证分段I(s,y)|x~最...

网友评论

      本文标题:Redis粗粒度使用记录

      本文链接:https://www.haomeiwen.com/subject/fgyaeqtx.html