Redis 遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库、数据结构服务器。

特点:

    1.Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。

    2.Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。

    3.Redis支持数据的备份,即master-slave模式的数据备份。

优势:

    1.性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。

    2.丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。

    3.原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。

    4.丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。

    

Redis与其他key-value存储的不同

    1.Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。

    2.Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,因为数据量不能大于硬件内存。在内存数据库方面的另一个优点是,相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,这样Redis可以做很多内部复杂性很强的事情。同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问。

安装:

    Ubuntu 的话直接 

        sudo apt-get update

        sudo apt-get install redis-server

        启动: 先启动 redis-server 服务,然后启动客户端redis-cli,接下来就可以在客户端里操作。[ubuntu我的是安装后直接服务就已经起来了,直接redis-cli就好]

配置:

查看配置命令如下(在进入redis-cli之后)  CONFIG GET CONFIG_SETTING_NAME

    例如我要看下日志输出等级怎么配置的就直接 config get loglevel

    输出是这样的:(第一行是key,第二行是配置的参数)

        1) "loglevel"

        2) "notice"

    CONFIG GET * 获取所有配置

编辑配置 CONFIG SET CONFIG_SETTING_NAME NEW_CONFIG_VALUE

    例如修改日志等级: CONFIG SET loglevel "notice"

参数说明: https://www.runoob.com/redis/redis-conf.html

Redis 数据类型:

    五种:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。

    

    1.String:一个 key 对应一个 value,是二进制安全的。甚至可以存图片和其他对象。

        设置set sss "lalalalalala"  获取get sss 删除 del sss

    2.Hash:是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。

        设置hset hhhh k1 v1 k2 v2 意思是存一个hash,名字是hhhh,里面两对值 k1 v2和k2 v2

        获取的话 是 hget hhhh k1 就是名字为hhhh的hash里面,k1的值是多少。

    3.List:列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)

        添加一个字符串到名字为lll的列表里lpush lll 111,再加一个lpush lll 222

        获取的话是这样lrange lll 0 1。就是获取lll列表里面从下标0到下标1的数据。

    4.Set: Redis 的 Set 是 string 类型的无序集合。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。

        向sss集合里面添加s1是 sadd sss s1,再添加一个s2,是sadd sss s2 ,如果再继续添加s2的话就会添加失败,返回添加0个,因为是集合嘛。

        获取的话是这样:smembers k2        

        

    5.zset(sorted set:有序集合)

        Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。

        不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但分数(score)却可以重复。

        

        添加数据的格式是这样 zadd key score member

        连续添加三条 

            zadd zzz 1 aaa

            zadd zzz 2 bbb

            zadd zzz 2 vvv

        然后获取下试试

            ZRANGEBYSCORE zzz 0 10000 这个是获取zzz里面分数(权重,是0-10000)的所有数据。

启动服务器 redis-server

登陆客户端 redis-cli

检验连接成功 PING  成功返回 PONG

在远程服务上执行命令

redis-cli -h host -p port -a password (redis-cli -h 127.0.0.1 -p 6379 -a "mypass")

【如果中文发现乱码,尝试 redis-cli 后面加上 --raw】

Redis HyperLogLog (>2.8.9)

Redis HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定 的、并且是很小的。

在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基 数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。

但是,因为 HyperLogLog 只会根据输入元素来计算基数,而不会储存输入元素本身,所以 HyperLogLog 不能像集合那样,返回输入的各个元素。

什么是基数?

比如数据集 {1, 3, 5, 7, 5, 7, 8}, 那么这个数据集的基数集为 {1, 3, 5 ,7, 8}, 基数(不重复元素)为5。 基数估计就是在误差可接受的范围内,快速计算基数。

实例

PFADD pf 1

PFADD pf 2

PFADD pf 3

PFADD pf 4

PFCOUNT pf 可以获取得到4

Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。

Redis 客户端可以订阅任意数量的频道。

SUBSCRIBE xxx     在一个终端里

PUBLISH xxx "mmmmmmmmmmm"   打开另一个终端或者多个终端,执行前面命令。第一个终端(订阅者)可以收到任何一个终端发过来的消息

可以SUBSCRIBE启动多个终端,然后订阅xxx,这样大家都能接受到消息。

Redis 事务

Redis 事务可以一次执行多个命令, 并且带有以下三个重要的保证:

批量操作在发送 EXEC 命令前被放入队列缓存。

收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行。

在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中。

MULTI    先输入这个

....中间是输入各种命 令,可以是很多行

EXEC    输入这个,开始触发上面的那一些命令

安全登陆

CONFIG get requirepass 看一下当前密码,默认是没有就是空

可以设置:CONFIG set requirepass "password"

然后再起一个终端,输入redis-cli之后随便执行一个命令会发现权限不足

这个时候 AUTH password    就行了,用设置好的秘密

清楚密码就直接 CONFIG set requirepass ""

剩下的就是针对每个数据类型+key的命令,非常详细 重要 灵活

需要的时候去这查 https://www.runoob.com/redis/redis-keys.html

建议先全都看一遍,大体知道都有什么命令

Redis笔记整理的更多相关文章

  1. Redis 笔记整理:回收策略与 LRU 算法

    Redis的回收策略 noeviction:返回错误当内存限制达到并且客户端尝试执行会让更多内存被使用的命令(大部分的写入指令,但DEL和几个例外) allkeys-lru: 尝试回收最少使用的键(L ...

  2. python学习笔记整理——字典

    python学习笔记整理 数据结构--字典 无序的 {键:值} 对集合 用于查询的方法 len(d) Return the number of items in the dictionary d. 返 ...

  3. 从0开始学Swift笔记整理(五)

    这是跟在上一篇博文后续内容: --Core Foundation框架 Core Foundation框架是苹果公司提供一套概念来源于Foundation框架,编程接口面向C语言风格的API.虽然在Sw ...

  4. Deep Learning(深度学习)学习笔记整理系列之(五)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

  5. 学习ReactNative笔记整理一___JavaScript基础

    学习ReactNative笔记整理一___JavaScript基础 ★★★笔记时间- 2017-1-9 ★★★ 前言: 现在跨平台是一个趋势,这样可以减少开发和维护的成本.第一次看是看的ReactNa ...

  6. Deep Learning(深度学习)学习笔记整理系列之(八)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

  7. Deep Learning(深度学习)学习笔记整理系列之(七)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

  8. Deep Learning(深度学习)学习笔记整理系列之(六)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

  9. Deep Learning(深度学习)学习笔记整理系列之(四)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

随机推荐

  1. Linux发行版及其目标用户

    1.Debian Debian 众所周知,是Deepin,Ubuntu和Mint等流行Linux发行版的母亲,这些发行版提供了可靠的性能,稳定性和无与伦比的用户体验.最新的稳定发行版是Debian 1 ...

  2. C#开发BIMFACE系列35 服务端API之模型对比6:获取模型构建对比分类树

    系列目录     [已更新最新开发文章,点击查看详细] BIMFACE平台提供了服务端"获取模型对比构件分类树"API.目录树返回结果以树状层级关系显示了增删改的构件信息,里面无法 ...

  3. javamelody简单介绍

    JavaMelody 能够监测Java或Java EE应用程序服务器,并以图表的方式显示:Java内存和Java  CPU使用情况,用户Session数量,JDBC连接数,和http请求.sql请求. ...

  4. Git Fetch failed解决办法

    Git 下拉过程中,电脑死机了,重启后出现问题 找到的解决办法 https://blog.csdn.net/qq_33330887/article/details/80242206

  5. JAVA面试核心知识点(一):计算机网络

    一·计算机网络 1.1 网络基础知识 OSI 七层协议(制定标准使用的标准概念框架): 物理层(传递比特流0101)->数据链路层(将比特流转换为逻辑传输线路)->网络层(逻辑编址,分组传 ...

  6. java例题_43 求0—7所能组成的奇数个数

    1 /*43 [程序 43 求奇数个数] 2 题目:求 0-7 所能组成的奇数个数. 3 */ 4 5 /*分析 6 * 1.0不能作最高位且最低位只能是1,3,5,7; 7 * 2.没有限定是几位数 ...

  7. 【死磕JVM】给同事讲了一遍GC后,他要去面试,年轻人,就是容易冲动!

    前言 在一个风和日丽的中午,和同事小勇一起走在公司楼下的小公园里面,看到很多的小姐姐,心想什么时候能够和这些小姐姐一起讨论人生呀,美滋滋,嘿嘿嘿. 收起你的哈喇子好不好,小勇总是在这个时候发出声音,挺 ...

  8. TypeError: 'list' object cannot be interpreted as an integer Python常见错误

    想要通过索引来迭代一个list或者string的元素, 这需要调用 range() 函数.要记得返回len 值而不是返回这个列表.

  9. Kubernetes,kubectl常用命令详解

    kubectl概述 祭出一张图,转载至 kubernetes-handbook/kubectl命令概述 ,可以对命令族有个整体的概念. 环境准备 允许master节点部署pod,使用命令如下: kub ...

  10. 在ASP.NET Core中使用ViewComponent

    前言 在之前的开发过程中,我们对于应用或者说使用一些小的组件,通常使用分布页(partial view),再往前在Web Form中我们会进行应用WEB Control,好吧提及一个关键性代码TagP ...