前言

总结自己的redis,日常使用不是特别频繁,所以比较基础。

开篇

redis 是无关系型数据库,因为其实内存数据库,所以常常和他的竞争对手memcached对比,因为两者原理基础相似,存储方式也是key和value的方式。

在memcached中value只能是字符串,而redis就有5种结构了。当然这并是不说mencached就比redis差,只是介绍出redis有哪些优点。

redis最大的优势或者说特点和普通的关系型数据库而言就在于是内存中,这意味着我们有很好都读写能力。

缺点也就很明显了,因为在内存中消耗的资源成本肯定比持久化存储的成本高。毕竟你要向公司申请一台redis,公司会考虑到今年给你们部门的开销,毕竟公司上层很可能不懂什么是技术,只知道资本主义那一套。

如果是技术出身的老板可能还会怼我们开发人员,因为他会在技术与资本之前权衡,但是往往选择资本主义,然后用着他的专业术语和我们沟通一番。

好了说到内存,那么肯定得考虑如何持久化,因为别的不说,你总得备份数据库吧,万一服务器抽风呢?

1.时间点存储,每隔一段时间存储一些数据或者说某个时间点来存储数据,总之就是规划时间这回事。然后这种方式被别人称为rdb,redis database。

2.AOF方式,(append only file)。这种方式就是通过操作日志的方式,每一次写(增删改)的操作都会被记录,这样就做到了持久化了。

上面的优劣点就不介绍了,因为第一章只是简单的介绍。

redis的数据结构

前文:我在远程操作,使用redis client作为演示。

redis 开启远程:修改 protected-mode 为 no ; 修改 daemonize 为 no ; 修改默认的,设置为 bind 0.0.0.0,然后添加一个密码,具体的可百度。当然这样是不安全的,只作为演示。

上图是我连接数据库后的,但是我只使用第一个,就算是生产环境一般也使用一个。

上文介绍到redis和memcached不同之处,在于由5种数据结构,看一下吧。

string 字符

set str string

key: str value string



当然我们命令行查看的方式:

get str

删除的话,就是del str,在此不演示了。

list 列表

添加一个list,key命名为keylist 值为item1

rpush keylist item1

当然我们也可以左边push进入:lpush keylist item2



你们看item2在item1的上方

删除的方式,一个是往左边弹出:



查看一下剩下什么:

lrange listkey 0 -1

因为redis client 是在是不好用,所以换回了putty,命令行模式。

往右边弹出:

rpop listkey

这样就没有任何数据了。

lrange listkey 0 -1

在列表中是支持索引的。

上图中使用了lindex 索引。但是是没有rindex。

集合

集合通过散列来实现的,这意味着每个字符都是不同的,集合同时是无序的。这和我们在高级语言中学习集合是一致的。

sadd setkey item1

往集合中增加一个值,如果key不存在就创建,返回了集合中的值的数量。

查询集合是使用:smembers setkey

中间有一个我打错了,望见谅。

查找的方式是:sismember setkey item1 如果存在返回1,不存在返回0



删除是srem setkey item1,删除了是1,没有删除是0。

散列

如果把其他类型比作游击队,那么散列名字虽然有个散字,但是却是一个团队。

这似乎补充了redis没有表的问题。

使用hset作为添加散列:

hset hashkey subhashkey1 item1-1

如果subhashkey1存在将会覆盖,且返回0。

查询的方式是hget,hget hashkey subhashkey1

查询散列中的keys,可以用hkeys hashkey.那么将会显示出subhashkey1,这里我就不展示。

如果使用hgetall hashkey,那么显示的将会是:

会显示所有的键值对,包括了值。

下图为删除的:

有序集合

写到这里,其实应该返回到集合去查看的。

前面解释了集合是通过散列实现的,集合是有索引的。

对应的是——哈希值:value。

在有序集合中,只是这个哈希值不再是系统帮助我们生成,而是我们手动输入,这样我们通过我们输入的值就可以找到value。

有两个一定要记住的术语:

1.有序集合的键被称作成员。

2.有序集合的值被称作分值。

我们通过zadd来添加。



上文可知,通知1是添加了,0是覆盖了。

对了,redis符合一句话,没有错误就是成功了,所以不存在返回0是出现错误。

zrange zsetkey 0 -1

是查询。

zrange zsetkey 0 -1 会有另外一个参数,就是展示出我们输入的成员。

如下图:

有一个zrangescore的,也特别重要:



它会根据我们的成员范围来查找。

最后一个是删除zrem,zrem删除的是分值,而不是成员,因为他是一个集合,而不是一个散列。

如果我们使用zrem通过成员去删除的话:



是不会成功的,返回结果为0,代表zrem中没有101这个分值,而不是说这条语句失败了。

总结

redis 的语句都特别好理解,但是在使用中一般都会出现问题,当然这些问题都会交给运维人员去解决(重启以及删库跑路),但是当持续崩的话,可能自己都会受到波及。

redis 一百二十篇(简单介绍)之第一篇的更多相关文章

  1. iOS开发网络篇—简单介绍ASI框架的使用

    iOS开发网络篇—简单介绍ASI框架的使用 说明:本文主要介绍网络编程中常用框架ASI的简单使用. 一.ASI简单介绍 ASI:全称是ASIHTTPRequest,外号“HTTP终结者”,功能十分强大 ...

  2. iOS开发UI篇—简单介绍静态单元格的使用

    iOS开发UI篇—简单介绍静态单元格的使用 一.实现效果与说明 说明:观察上面的展示效果,可以发现整个界面是由一个tableview来展示的,上面的数据都是固定的,且几乎不会改变. 要完成上面的效果, ...

  3. iOS开发Swift篇—简单介绍

    iOS开发Swift篇—简单介绍 一.简介 Swift是苹果于2014年WWDC(苹果开发者大会)发布的全新编程语言 Swift在天朝译为“雨燕”,是它的LOGO 是一只燕子,跟Objective-C ...

  4. Salesforce LWC学习(二十六) 简单知识总结篇三

    首先本篇感谢长源edward老哥的大力帮助. 背景:我们在前端开发的时候,经常会用到输入框,并且对这个输入框设置 required或者其他的验证,当不满足条件时使用自定义的UI或者使用标准的 inpu ...

  5. JMS【二】--ActiveMQ简单介绍以及安装

    现实的企业中,对于消息通信的应用一直都非常的火热,而且在J2EE的企业应用中扮演着特殊的角色,所以对于它研究是非常有必要的. 上篇博文JMS[一]--JMS基本概念,我们介绍了消息通信的规范JMS,我 ...

  6. Android 驱动(二) IIC简单介绍

    一. I2C简单介绍 I2C(Inter-Integrated Circuit)总线是一种由 Philips 公司开发的两线式串行总线,用于连接微控制器及其外围设备.I2C 总线最基本的长处就是简单性 ...

  7. 【转】深入浅出JMS(二)--ActiveMQ简单介绍以及安装

    现实的企业中,对于消息通信的应用一直都非常的火热,而且在J2EE的企业应用中扮演着特殊的角色,所以对于它研究是非常有必要的. 这篇博文介绍一款开源的JMS具体实现——ActiveMQ.ActiveMQ ...

  8. mongodb基础整理篇————简单介绍[一]

    前言 简单介绍一下文档数据库. 正文 mongodb 是一个以json为数据模型的文档数据库. 这里要介绍一下什么是json.因为有些人认为'{a:1,b:2}' 是json,而"this ...

  9. 一百二十九:CMS系统之七牛云存储介绍和配置

    将图片的存储.尺寸等图片本身的一些擦做,交给七牛云处理,自己只关注网站开发本身 七牛云官网:https://www.qiniu.com 操作 登录后,点击管理控制台 点击对象存储-->新建存储空 ...

随机推荐

  1. Spring5源码分析(1)设计思想与结构

    1 源码地址(带有中文注解)git@github.com:yakax/spring-framework-5.0.2.RELEASE--.git Spring 的设计初衷其实就是为了简化我们的开发 基于 ...

  2. Redis: userd_memory使用超出maxmemory

    Redis:userd_memory使用超出maxmemory 一.问题现象 2018.12.30 19:26分,收到Redis实例内存使用告警“内存使用率299%>=80%”,检查实例info ...

  3. SVN版本控制说明与相关指令

    SVN版本控制说明 目的 多个版本中并行开发,提高开发效率: 保证各个版本和各个环境(开发.测试.主干)的独立,避免相互影响: 通过分支与主干的合并,这样主干永远是最新.最高版本,并且都在后面的测试中 ...

  4. C# 客户端内存优化分析

    背景概述 C# 开发客户端系统的时候,.net 框架本身就比较消耗内存资源,特别是xp 这种老爷机内存配置不是很高的电脑上运行,所以就需要进行内存上的优化,才能流畅的在哪些低端电脑上运行. 想要对C# ...

  5. 7-3 jmu-python-回文数判断(5位数字) (10 分)

    本题目要求输入一个5位自然数n,如果n的各位数字反向排列所得的自然数与n相等,则输出‘yes’,否则输出‘no’. 输入格式: 13531 输出格式: yes 输入样例1: 13531 输出样例1: ...

  6. 关于地址栏url的一些小结

    1.获取整个地址栏地址 //获取整个地址栏地址 var href = window.location.href; console.log(href); 以上代码就是获取整个url地址 2.获取url协 ...

  7. python之路-基本数据类型之list列表

    1.概述 列表是python的基本数据类型之一,是一个可变的数据类型,用[]方括号表示,每一项元素使用逗号隔开,可以装大量的数据 #先来看看list列表的源码写了什么,方法:按ctrl+鼠标左键点li ...

  8. java并发编程基础概念

    本次内容主要讲进程和线程.CPU核心数和线程数.CPU时间片轮转机制.上下文切换,并行和并发的基本概念以及并发编程的好处和注意事项,为java并发编程打下扎实基础. 1.什么是进程和线程 1.1 进程 ...

  9. 3DGIS与BIM集成集成技术及铁路桥梁可视化系统

    3DGIS与BIM的集成技术 3DGIS与BIM的集成技术包括2部分:一是将Revit软件生成的BIM针对3DGIS的快速无损格式转换,这种转换包括几何信息(如形状.位置等信息)和属性信息(如建筑信息 ...

  10. 学习RF遇到的问题

    1.Windows安装pip命令安装RF报错: File "<stdin>", line 1 pip install robotframework 原因:pip命令不在 ...