【redis缓存】缓存预热

如果新闻数据量不大,在系统启动前直接灌入,如手工一次性批量插入缓存数据。

  • 写个 PHP 脚本(其他语言均可实现)、写个 shell 脚本来完成。
  • redis 批量插入数据(pipe mode),可以根据redis协议的格式生成出一个文件,然后批量导入。
     
    set news101 newscontent EX 200
    拆分成redis格式就是(注意换行是\r\n):
    *5 // 按空格拆分有几段
    $3 // “set”的字符串长度
    set
    $7 // “news101”的字符串长度
    news101
    $11 // “newscontent”的字符串长度
    newscontent
    $2
    EX
    $3
    200

    本地(127.0.0.1)myql  redis库 news表,结构内容如下:
    【redis缓存】缓存预热_第1张图片

    news.sql文件内容如下:

    select concat('*5','\r\n','$3','\r\n','set','\r\n','$',LENGTH(news_id)+4,'\r\n','news',news_id,'\r\n','$',LENGTH(news_title),'\r\n',news_title,'\r\n','$2','\r\n','EX','\r\n','$3','\r\n','200','\r') from news order by news_id

    直接在 navicat 里执行可看到如下结果:

  • 【redis缓存】缓存预热_第2张图片


    在命令行执行以下命令:

    mysql -h 127.0.0.1 -uroot -proot -D redis --skip-column-names --raw < news.sql | redis-cli --pipe

    --skip-column-names 不显示列名   --raw 原生输出,不做任何转义 


    查看redis(--raw 输出中文):

    redis-cli --raw
    
    127.0.0.1:6379> keys *
    news102
    news104
    news9012
    news101
    news103
    127.0.0.1:6379> get news9012
    我很长
    127.0.0.1:6379>

     

你可能感兴趣的:(redis)