前言

  不禁喊出一句ig牛逼!哈哈哈 这个话题是不是有点过时了?但说到Redis,真的是被强行灌输的,到处都会被安利Redis,吓得只会mysql和oracle的我,赶紧去get一波..

  数据库种类

  关系型数据库

  常用的关系型数据库:mysql oracle

  特点:

  •   使用sql进行操作
  • 存储在磁盘

  非关系型数据库

  常用的非关系型数据库:redis  Memcached

  特点:

  •   不依赖sql语句
  • 存储在内存中

  Redis安装

  安装路径

  •   官网:https://redis.io,进入之后,点击“download”进行下载,最新版本:5.0.0,亲测没有问题
  • Github:在首页搜索redis,选择第一个进行下载也可以

  安装方法

  1.   首先,将压缩包解压
  2.   进入目录,看有Makefile,直接make,然后安装:sudo make install

  开源库的安装方法几乎都一样,更详细的介绍可以参考我的这篇博客:https://www.cnblogs.com/liudw-0215/p/9917422.html

  测试

  •   启动server:redis-server
  • 启动client:redis-cli
  • 在客户端执行:ping 或ping hello,看到服务器有回显,说明Redis安装成功,如下图:

  至此,Redis安装成功!

  Redis使用

  redis都是以键值对key-value存储的,key一定是字符串类型,value可能是字符串、list、set、sortedset和hash类型!

  字符串操作

  •   插入
set str1 hello
  •   查询
get str1
  •   批量插入
mset str2  str2 
  •   批量查询
mget str1 str2 str3

  可以看到key是不允许重复的!

  list操作

  list可以理解为一串字符串,也可以理解为链表;操作过程中,既可以按照队列操作,也可以按照栈进行操作

  •   插入-头插法
lpush ls1 aaa bbb ccc
  • 查询

  查询要稍微说一下,命令是lrange+key+范围,要说明一下范围该怎么表示呢?从0开始可以,那么结束该怎么表示呢?不知道一共有多少个?redis采用-1表示最后一个,-2表示倒数第二个,查询第一个到最后一个命令:

lrange ls1  -

  查询结果如下:

  

  说明:注意到显示顺序了么?“l”代表从左开始插入,也就是头插法;如果理解数据结构的头插法,跟这是一样的,因为redis底层也是用数据结构+算法实现的!

  •   插入-尾插法
rpush ls2    
  •   弹出最左边
lpop ls2
  •   弹出最右边
rpop ls2

求list长度

llen ls1

  

  set操作

  set集合是没有顺序的,元素是唯一的

  插入

sadd set   

  查询

smembers set

  求差集(A-B)

sdiff A B

  求交集

sinter A B

  求并集

sunion A B

  运行结果如下:

 

  Redis的数据持久化

  redis将数据存储在内存,速度比存在磁盘中快很多,大约在百万量级的差别,但是宕机数据就没了,这是不允许的!Redis提供了两种解决办法。

  RDB形式

  特点:存数据

  AOF形式

  特点:存命令

  hiredis介绍与安装

  介绍  

    hiredis又是什么鬼东西呢?它是封装好的操作Redis的C语言API,安装之后,C语言就可以调用API,去操作Redis了。

  安装

  依然很简单,Github首页搜索:hiredis,下载,解压,make,sudo make install,一气呵成!

  测试

  看到安装目录下,有个examples目录,这个目录就是例子,可以看到这个目录下,有很多例子,可以用example.c,然后编译一下,我的版本会报错,我修改了包含的头文件,然后正常,运行结果如下:

  

  至此,hiredis安装成功!

  hiredis API接口的说明

   封装好的API接口有很多,但掌握4个就可以完成基本的增删改查了

  连接数据库

  通过IP、端口进行连接,并返回redisContext,用于下面的使用

  

  发送请求命令

  函数原型:

  void *redisCommand(redisContext *c, const char *format, ...);

  参数:

  第一个参数:就是redisConnect的返回值

  其余参数就是可变参数了

  返回值:

  就很有意思了,可以参照下表:

  

  释放资源 

  void freeReplyObject(void *reply);

  void redisFree(redisContext *c);

  

  

  

跟王思聪热狗图一样大热的Redis,还不赶紧来Get一下?的更多相关文章

  1. 为什么前两年大热的VR创业突然冷了?

    不得不说,如果不是<头号玩家>在国内的热映,人们似乎都要忘记VR这个行业了.<头号玩家>中那些带有极强真实色彩的游戏,其实就是VR进化的目标,甚至是巅峰!而里面的角色佩戴的设备 ...

  2. 华为云ModelArts图深度学习,学习知识还能考取微认证

    作为人工智能最前沿的技术之一,图深度学习被公认是人工智能认识世界实现因果推理的关键,也是深度学习未来发展的方向.但深度学习对图数据模型的支持性差一直是众多研究者难以攻克的难点,因此图深度学习在实际生产 ...

  3. 大数据分析中Redis应用

    大数据分析中Redis 大数据时代,海量数据分析就像吃饭一样,成为了我们每天的工作.为了更好的为公司提供运营决策,各种抖机灵甚至异想天开的想法都会紧跟着接踵而来!业务多变,决定了必须每天修改系统,重新 ...

  4. 商品类目和商品大广告的Redis缓存

    (dubbo)主要的实现类: 商品类目的Redis缓存 com.bjsxt.ego.portal.service.impl.PortalItemCatServiceImpl package com.b ...

  5. 思维导图趋势大分析(MindMaster与百度脑图)

    思维导图现在可以说是大流行期间,涉及学习.工作.生活方方面面的内容. 一.什么是思维导图 思维导图的英文名称是The Mind Map,也叫做心智导图,脑图,心智地图,脑力激荡图等.思维导图应用图文兼 ...

  6. 目前大热的AI和SLAM的职业发展的想法

    目前,AI的研究和SLAM的发展已经走到使用领域.还记得三年前,上<信息光学>的老师在课上提到,他有一个研究生买了一个两万块的笔记本,还要出国去研究人工智能,当时听着认为这位学长很疯狂.可 ...

  7. 深入解析当下大热的前后端分离组件django-rest_framework系列四

    查漏补缺系列 解析器 request类 django的request类和rest-framework的request类的源码解析 局部视图 from rest_framework.parsers im ...

  8. 深入解析当下大热的前后端分离组件django-rest_framework系列一

    前言 Nodejs的逐渐成熟和日趋稳定,使得越来越多的公司开始尝试使用Nodejs来练一下手,尝一尝鲜.在传统的web应用开发中,大多数的程序员会将浏览器作为前后端的分界线.将浏览器中为用户进行页面展 ...

  9. 盘点当下大热的7大Github机器学习创新项目

    哪个平台有最新的机器学习发展现状和最先进的代码?没错——Github!本文将会分享近期发布的七大GitHub机器学习项目.这些项目广泛覆盖了机器学习的各个领域,包括自然语言处理(NLP).计算机视觉. ...

随机推荐

  1. config.go

    package blog4go import ( "encoding/xml" "errors" "io/ioutil" "os& ...

  2. POJ_3342_Party at Hali-Bula_树形DP

    POJ_3342_Party at Hali-Bula_树形DP 题意:直接上司和本人不能同时参加,求最多参加人数,并回答是否唯一解. 分析:常规树形DP,需要再维护一下选/不选当前点取得最大值时是否 ...

  3. BZOJ_2599_[IOI2011]Race_点分治

    BZOJ_2599_[IOI2011]Race_点分治 Description 给一棵树,每条边有权.求一条简单路径,权值和等于K,且边的数量最小.N <= 200000, K <= 10 ...

  4. ASP.NET Core 实战:构建带有版本控制的 API 接口

    一.前言 在上一篇的文章中,主要是搭建了我们的开发环境,同时创建了我们的项目模板框架.在整个前后端分离的项目中,后端的 API 接口至关重要,它是前端与后端之间进行沟通的媒介,如何构建一个 “好用” ...

  5. Java8新特性之一:Lambda表达式

    Java8是自java5之后最重大的一次更新,它给JAVA语言带来了很多新的特性(包括编译器.类库.工具类.JVM等),其中最重要的升级是它给我们带来了Lambda表达式和Stream API. 1. ...

  6. FreeSql 如何实现 Sqlite 跨库查询

    FreeSql 是 .NetFramework 4.6+..NetCore 下的 ORM 功能库,提供了丰富的功能,支持五种流行数据库 MySql/SqlServer/PostgreSQL/Oracl ...

  7. MOCK API 的定义及实践(使用eolinker实现)

    MOCK API 的定义 根据百度百科的定义,mock测试就是在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法.这个虚拟的对象就是mock对象,mock对 ...

  8. 金三银四,如何征服面试官,拿到Offer

    又到了茶余饭后的时间,想想写点什么,掐指一算,噢呦,快到3月份了,职场的金三银四跳槽季又来了,不同的是今年比往年「冷」一些,形式更加严峻一些,大家多多少少可能都听到或看到一些信息,就是好多公司在优化裁 ...

  9. .net之设计模式

    在上一篇文章里我通过具体场景总结了“.net面向对象的设计原则”,其中也多次提到一些设计模式方面的技术,可想而知,设计模式在我们的开发过程中也是必不可少的.今天我们就来简单交流下设计模式.对于设计模式 ...

  10. 搭建基于SornaQube的自动化安全代码检测平台

    一.背景和目的 近年来,随着新业务.新技术的快速发展,应用软件安全缺陷层出不穷.虽然一般情况下,开发者基本都会有单元测试.每日构建.功能测试等环节来保证应用的可用性.但在安全缺陷方面,缺乏安全意识.技 ...