如何让搜索引擎收录网站,桂林市内必去的地方,网站建设与管理简介,好的网站怎么设计判定依据
key本身的数据量过大:string类型的key它的值为5MBkey中的成员数量过多:一个zset类型的key成员数量为10000个key中的成员数据量过大:一个hash类型的key他的成员只有1000个但是这些value总大小超过100MB查看内存命令
127.0.0.1:6379 hset k1 name 123 age 123 sex…判定依据
key本身的数据量过大:string类型的key它的值为5MBkey中的成员数量过多:一个zset类型的key成员数量为10000个key中的成员数据量过大:一个hash类型的key他的成员只有1000个但是这些value总大小超过100MB查看内存命令
127.0.0.1:6379 hset k1 name 123 age 123 sex 123 email 123123
(integer) 1
127.0.0.1:6379 memory usage k1
(integer) 96
127.0.0.1:6379
推荐
单个key的value小于10KB对于集合类型的key建议元素数量小于1000
危害
网络阻塞 对于bigkey执行读请求时少量的QPS就可能导致带宽使用率被占满导致Redis实例 乃至物理机变慢 数据倾斜 BigKey所在的Redis实例内存使用率远超其他使用率 无法使数据分片内存资源达到均衡 Redis阻塞 对元素较多的hash list zset 等做运算耗时较多 使主线程被阻塞 CPU压力 BigKey的数据序列化和反系列化会导致CPU的使用率飙升 影响Redis实例和本机其他引用
查找BigKey
redis-cli–bigkeys
[rootCentOS7 ~]# redis-cli --bigkeys# Scanning the entire keyspace to find biggest keys as well as
# average sizes per key type. You can use -i 0.1 to sleep 0.1 sec
# per 100 SCAN commands (not usually needed).[00.00%] Biggest hash found so far k1 with 4 fields-------- summary -------Sampled 1 keys in the keyspace!
Total key length in bytes is 2 (avg len 2.00)Biggest hash found k1 has 4 fields0 strings with 0 bytes (00.00% of keys, avg size 0.00)
0 lists with 0 items (00.00% of keys, avg size 0.00)
1 hashs with 4 fields (100.00% of keys, avg size 4.00)
0 streams with 0 entries (00.00% of keys, avg size 0.00)
0 sets with 0 members (00.00% of keys, avg size 0.00)
0 zsets with 0 members (00.00% of keys, avg size 0.00)
[rootCentOS7 ~]#
选择何时的数据结构
class user{private String name;private Integer age;
}JSON 优点实现简单粗暴 缺点数据耦合不够灵活
user:1 {name: Jack, age: 21}String 优点可以灵活访问对象任意字段 缺点占用空间大、没办法做统一控制
user:1:name Jack
user:1:age 21Hash 优点底层使用ziplist空间占用小可以灵活访问对象的任意字段 缺点代码相对复杂
user:1 name jackage 21BigKey 案例
假如有hash类型的key其中有100万对field和valuefield是自增id这个key存在什么问题如何优化
keyfieldvaluesomeKeyid:0value0……id:999999value999999
方案一拆分为string类型 | key | value | | — | — | | id:0 | value0 | | … | … | | id:999999 | value999999 |
存在的问题string结构底层没有太多内存优化内存占用较多想要批量获取这些数据比较麻烦
方案二拆分为小的hash将 id / 100 作为key 将id % 100 作为field这样每100个元素为一个Hash | key | field | value | | — | — | — | | key:0 | id:00 | value0 | | | … | … | | | id:99 | value99 | | key:1 | id:00 | value100 | | | … | … | | | id:99 | value199 | | … | | | | key:9999 | id:00 | value999900 | | | … | … | | | id:99 | value999999 |