zoukankan      html  css  js  c++  java
  • redis入门

      redis是一个key-value数据库,就像是java中List,Set,Map一样,使用内存存储数据,c语言编写,读写速度都很快。下载程序包,只有2Mb大小,可以说非常轻量级了。打开redis的目录,可以看到一个makefile,这个正是为了c语言编译的。如果有编译好的二进制文件,只要运行就可以了。

      和Zookeeper一样,可以使用软件自身提供的client访问redis。但是这很不方变,并且会有权限相关的问题。

      然后就是使用redis-cli练习5种数据类型的使用,这是属性redis的过程,然后才能好好的使用jedis访问redis。自己可以想象怎么开发java版本的redis客户端,基本理念就是连接到3306端口,然后向其发送命令行,获取输出。这个就有点类似于一次rest请求,只是是这个命令行的解析和返回结果的解析比较复杂。查看这个官方推荐的java-redis-client,这个带注释不到400行的代码就完成了这个功能,说明作者的基本功真的很强大,值得一读并模仿。

      查看官网资料,在document菜单下面,有一个specification,可以看到Redis Protocol specification超链接说明了client和server的交互使用了一种称作RESP的协议,英文描述:

    A client connects to a Redis server creating a TCP connection to the port 6379.
    
    While RESP is technically non-TCP specific, in the context of Redis the protocol is only used with TCP connections
    (or equivalent stream oriented connections like Unix sockets).

      大意是没有使用TCP协议,而只是使用了TCP连接,那就更没有用到HTTP连接,关于网络连接,这里面还是大有学问。只要我们编写的代码遵守这个RESP协议就可以了,不管什么语言都可以。可以看到,在protol层,是没有数据类型的概念的,全部都是以byte数组形式传输。对这个协议进行封装后,就可以像在本地使用redis一样。

      熟练使用redis就要对redis的集合特性非常清楚,并且熟悉其命令

    String:set/get
    HashMap: hmset/hgetall List:lpush/lrange
    Set:sadd/smembers
    ZSet:zadd/zrangebyscore
    # name是其保留字(hold key)

      redis除了常见的集合操作命令外,就是一些功能性的,比如订阅发布系统。在cs模式中,当有消息到达时,服务端要通知客户端。

      现在流行redis集群吧,

       要练习使用jedis发送接收pojo消息,毕竟是结构型数据,不是能老使用string对象

      从我的redis使用体验来说,有两个主要问题:一是依赖于键查找,查询功能受限。二是软件小,没有可视化和监控工具,需要非常熟悉命令行,不像mysql数据库,把它当黑盒是不可以的。比如info。

      redis还有一个问题就是数据迁移问题,或者谁数据导出,比如格式为json?,数据清理等,都是不太好处理的问题。

     参考博文:http://lanjingling.github.io/2015/11/20/redis-pub-sub

    参考博文: https://www.w3cschool.cn/redis/redis-data-types.html

    发布和订阅功能:https://blog.csdn.net/weixin_38111957/article/details/82957842

    参考资料:https://redis.io/topics/protocol

  • 相关阅读:
    并查集 [Total Eclipse]
    2020 Multi-University Training Contest 2 [The Oculus]
    2020牛客暑期多校训练营(第三场)G Operating on a Graph
    杭电多校第一场 [Fibonacci Sum]
    Codeforces Round #658 (Div. 2) E. Mastermind
    二次剩余
    SpringBlade 后端项目 部署 2.0-boot
    SpringBlade 前端项目 部署 Saber
    前端 天气插件
    SpringBlade 打包
  • 原文地址:https://www.cnblogs.com/Robin008/p/12817523.html
Copyright © 2011-2022 走看看