跟王思聪热狗图一样大热的Redis,还不赶紧来Get一下?
前言
不禁喊出一句ig牛逼!哈哈哈 这个话题是不是有点过时了?但说到Redis,真的是被强行灌输的,到处都会被安利Redis,吓得只会mysql和oracle的我,赶紧去get一波..
数据库种类
关系型数据库
常用的关系型数据库:mysql oracle
特点:
- 使用sql进行操作
- 存储在磁盘
非关系型数据库
常用的非关系型数据库:redis Memcached
特点:
- 不依赖sql语句
- 存储在内存中
Redis安装
安装路径
- 官网:https://redis.io,进入之后,点击“download”进行下载,最新版本:5.0.0,亲测没有问题
- Github:在首页搜索redis,选择第一个进行下载也可以
安装方法
- 首先,将压缩包解压
- 进入目录,看有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一下?的更多相关文章
- 为什么前两年大热的VR创业突然冷了?
不得不说,如果不是<头号玩家>在国内的热映,人们似乎都要忘记VR这个行业了.<头号玩家>中那些带有极强真实色彩的游戏,其实就是VR进化的目标,甚至是巅峰!而里面的角色佩戴的设备 ...
- 华为云ModelArts图深度学习,学习知识还能考取微认证
作为人工智能最前沿的技术之一,图深度学习被公认是人工智能认识世界实现因果推理的关键,也是深度学习未来发展的方向.但深度学习对图数据模型的支持性差一直是众多研究者难以攻克的难点,因此图深度学习在实际生产 ...
- 大数据分析中Redis应用
大数据分析中Redis 大数据时代,海量数据分析就像吃饭一样,成为了我们每天的工作.为了更好的为公司提供运营决策,各种抖机灵甚至异想天开的想法都会紧跟着接踵而来!业务多变,决定了必须每天修改系统,重新 ...
- 商品类目和商品大广告的Redis缓存
(dubbo)主要的实现类: 商品类目的Redis缓存 com.bjsxt.ego.portal.service.impl.PortalItemCatServiceImpl package com.b ...
- 思维导图趋势大分析(MindMaster与百度脑图)
思维导图现在可以说是大流行期间,涉及学习.工作.生活方方面面的内容. 一.什么是思维导图 思维导图的英文名称是The Mind Map,也叫做心智导图,脑图,心智地图,脑力激荡图等.思维导图应用图文兼 ...
- 目前大热的AI和SLAM的职业发展的想法
目前,AI的研究和SLAM的发展已经走到使用领域.还记得三年前,上<信息光学>的老师在课上提到,他有一个研究生买了一个两万块的笔记本,还要出国去研究人工智能,当时听着认为这位学长很疯狂.可 ...
- 深入解析当下大热的前后端分离组件django-rest_framework系列四
查漏补缺系列 解析器 request类 django的request类和rest-framework的request类的源码解析 局部视图 from rest_framework.parsers im ...
- 深入解析当下大热的前后端分离组件django-rest_framework系列一
前言 Nodejs的逐渐成熟和日趋稳定,使得越来越多的公司开始尝试使用Nodejs来练一下手,尝一尝鲜.在传统的web应用开发中,大多数的程序员会将浏览器作为前后端的分界线.将浏览器中为用户进行页面展 ...
- 盘点当下大热的7大Github机器学习创新项目
哪个平台有最新的机器学习发展现状和最先进的代码?没错——Github!本文将会分享近期发布的七大GitHub机器学习项目.这些项目广泛覆盖了机器学习的各个领域,包括自然语言处理(NLP).计算机视觉. ...
随机推荐
- netData.go 阅读源码
) // 定义数据传输结构 type NetData struct { // 消息体 Body interface{} // 操作代号 Operation string ...
- BZOJ_3477_[Usaco2014 Mar]Sabotage_二分答案
BZOJ_3477_[Usaco2014 Mar]Sabotage_二分答案 题意: 约翰的牧场里有 N 台机器,第 i 台机器的工作能力为 Ai.保罗阴谋破坏一些机器,使得约翰的工作效率变低.保罗可 ...
- 关于CocoaPods的ruby镜像文件问题
项目遇到第三方库更新问题 时 用到cocoaPods更换淘宝ruby镜像问题的时候 报错 后来 又在别处找了下 发现 用的是 https 如下: 后来细想 可能跟Xcode7 要求HTTPs ...
- C#进度框
1.方法一:使用线程 功能描述:在用c#做WinFrom开发的过程中.我们经常需要用到进度条(ProgressBar)用于显示进度信息.这时候我们可能就需要用到多线程,如果不采用多线程控制进度条,窗口 ...
- 数字证书中读取PublicKey
1. 读取https签发证书中的key 1) 在下面的代码中,是实现读取证书字符串来读取key的,CERTIFICATE 就是一个证书的字符串, 而方法cf.generateCertificate() ...
- spring 上传文件文件的一个例子,
/** * 类名称:UploadTest 类描述:创建人:zhang 创建时间:2015年3月13日 下午4:20:57 修改人:zhang * 修改时间:2015年3月13日 下午4:20:57 修 ...
- selenium IDE 使用方法整理
1.设置起始点(确定case从哪步开始执行),快捷键:S,效果图如下: 2.设置断点(case执行到添加断点处,将自动停止),快捷键:B,效果图如下: 3.设置判断点 如:百度输入ceshi,点 ...
- 使用Entity Framework Core访问数据库(DB2篇)
前言 上一篇讲了一些EF Core访问Oracle的坑.(感兴趣请移步:使用Entity Framework Core访问数据库(Oracle篇)) 这篇主要讲一下关于EF Core访问DB2的一揽子 ...
- @Controller和@RestController源码解析
2018年不知不觉已经走到了尾声,你还在为分不清@Controller和@Restcontroller而烦恼吗?这篇博文从源码层面分析这两个注解,值得一读. 首先贴一张源码的图,对比一下,左边是@Co ...
- Unity协程基础用法
//通过StartCoroutine()开始一个协程//通过StopCoroutine();关闭一个协程//通过StopAllCoroutines()方法来实现关闭所有协程void Start(){D ...