正文
redishash存2亿,redis存1亿条数据占用内存
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
redis数据类型和应用场景
redis支持的数据类型有String、Hash、List、Set、Zset。String(字符串类型):可以是普通字符串,也可以是整数或浮点数值。可以设置过期时间;可以对字符串进行append、get、set、incr、decr等操作。
应用场景:存储一些结构化的数据,比如用户的昵称、年龄、性别、积分等,存储一个用户信息对象数据。List(列表)Redis 列表是简单的字符串列表,按照插入顺序排序。
应用场景:交集,并集,差集(微博中,可以将一个用户所有的关注人存在一个集合中,将其所有粉丝存在一个集合。
Redis 提供了 5种数据结构,每一种数据结构有各种的使用场景。String 字符串 字符串类型是 Redis 最基础的数据结构,首先键都是字符串类型,而且 其他几种数据结构都是在字符串类型基础上构建的,我们常使用的 set key value 命令就是字符串。常用在缓存、计数、共享Session、限速等。
redis用hash实现读写锁
SETNX不同:SETNX(SETifNoteXists),该命令在key不存在时设置key的值,如果key存在,不做任何操作。Redishash数据结构可以存储多个键值对,所以我们可以使用Redishash实现分布式锁。Redishash实现方式不同:可以使用SETNX实现分布式锁,将Redis中某个Key的value设置为1,表示该锁被某个客户端取得。
Redisson还提供了公平加锁选项,确保线程按加锁顺序获取,避免资源饥饿。对于读多写少的场景,它支持读写锁,确保并发访问的正确性。例如,RedissonReadWriteLock能区分读读共享、读写互斥和写写互斥,同时支持批量加锁(联锁)以提高效率。跨节点的挑战与解决方案 然而,单Redis实例的故障可能导致系统问题。
(1)加锁机制 咱们来看上面那张图,现在某个客户端要加锁。如果该客户端面对的是一个redis cluster集群,他首先会根据hash节点选择一台机器。
redis中hash类型的存在有必要吗
1、如果只是通过文章id进行点击量的存取和自增操作的话,string涉及的操作有set,get和incr。hash涉及到的操作有hget,hset,hincr操作。
2、hash对应value内部实际就是一个hashmap,实际这里会有2种不同实现,这个hash的成员比较少时redis为了节省内存会采用类似一维数组的方式来紧凑存储,而不会采用真正的hashmap结构,对应的value redisobject的encoding为zipmap,当成员数量增大时会自动转成真正的hashmap,此时encoding为ht。
3、优化方案是使用 Hash 结构,由于 Hash 结构会在单个 Hash 元素在不足一定数量时进行压缩存储,所以可以大量节约内存。这一点 String 结构里是不存在的 省内存的原因是新建一个 hash 对象时开始是用 ziplist(又称为 small hash)来存储的。
关于redishash存2亿和redis存1亿条数据占用内存的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。