0%

本文主要包括:

  • Kafka简介(后补)
  • Kafka可以干什么?(后补)
  • Kafka安装与启动
  • Kafka常用操作
    阅读全文 »

本文主要包括:

  • 什么是Redis
  • Redis有哪些优缺点
  • 为什么要用 Redis 而不用 map/guava 做缓存?
  • Redis为什么这么快
  • Redis的应用场景
  • Redis持久化
  • Redis踩的坑

概述

什么是Redis

Redis(Remote Dictionary Server) 是一个使用 C 语言编写的,开源的(BSD许可)高性能非关系型(NoSQL)的键值对数据库。
Redis 可以存储键和五种不同类型的值之间的映射。键的类型只能为字符串,值支持五种数据类型:字符串、列表、集合、散列表、有序集合。

数据类型

Redis主要有5种数据类型,包括String,List,Set,Zset,Hash,满足大部分的使用要求
Redis数据类型

以上可以参考Redis 常见面试题

Redis踩的坑

最近在测试任务的时候,把reids的key和value写反了,导致生产环境的reids凭空多了200多万脏数据,在网上查了一个批量删除的命令,直接在生产环境执行了,导致redis宕机、OOM了

所以,以后再操作生产环境数据库,特别是删除、大规模数据遍历、消耗性能比较大的情况下,在网上查的命令最好还是在测试环境测试一下再用,多么痛的领悟

这里记录一下两个命令:

错误的命令

在数据量较大的情况下,千万别用类似keys *的操作,keys会把reids里所有的key一口气都遍历一遍,消耗性能奇高。。

redis-cli -h ${ip} -p 6379 -n 4 -a '${pws}' keys '0^!*' |xargs redis-cli -h ${ip} -p 6379 -n 4 -a '${psw}' DEL

正确的命令:

在生产环境下,尽量使用scan

redis-cli -h ${ip} -p 6379 -n 4 -a '${psw}' --scan --pattern "0^!*" | xargs -L 1000 redis-cli -h ${ip} -p 6379 -n 4 -a '${psw}' del

具体可以参考:Redis 千万不要乱用KEYS命令,不然会挨打的

collection表名包含特殊字符

当collection表名包含特殊字符时,mongo sehll在find()等操作时会报错,这时候,可以使用getCollection函数,把表明以字符串的形式传进函数内
例如:

db.getCollection('all-aa-bb_cc_dd_20200129').find()

使用**args简化输入代码

test(kwargs) 的作用则是把字典 kwargs 变成关键字参数传递。比如,如果 kwargs 等于 {‘a’:1,’b’:2,’c’:3} ,那这个代码就等价于 test(a=1,b=2,c=3) 。

python拼接字符串的方式

常用的就是+,还有%s,%d等占位符的方式,还有format()拼接方式
这里记录一种比较方便的方式,f-string方式

name = 'world'
myname = 'python_cat'
words = f'Hello {name}. My name is {myname}.'
print(words)

本文主要包括:

  • spark-sql如何使用hive的udf
  • spark-sql解决小文件问题
  • spark-sql cli 输出日志级别为warn
  • sparksql读取hive数据报错
    阅读全文 »