============================
Redis 安装
============================
redis 采用单线程多路复用的机制提供并发访问, 用到了 Linux 的一些独有的特性, 所以官网不提供 Windows 版本, 微软和开源界曾经将 redis 移植到 Windows, 在 github 上可以下载使用, 不过最后的 release 版本是 2016 年 7 月的 3.2.100 版, 貌似已经弃坑了. 不过作为开发环境已经是足够了.
下载地址: https://github.com/MicrosoftArchive/redis/tags

Windows 下安装后, 会自动创建一个 redis 的服务名. 该服务的命令其实是:
C:\Program Files\Redis\redis-server.exe" --service-run "C:\Program Files\Redis\redis.windows-service.conf"
可以看到关键的配置参数是在 redis.windows-service.conf 文件中.

redis 默认的端口是 6379, 这个端口一般不需要修改, 默认访问是不需要密码的, 所以需要加一个登陆口令.
修改文件 redis.windows-service.conf 的 requirepass 参数, 配置登陆口令:
requirepass Redis!123

============================
Redis 部署形式
============================
单机:
主从: 读写分离, 多节点数据备份
哨兵: 高可用, 读写分离
集群: 数据分片, 扩展存储能力, 同时包含主从及哨兵特性
一般生产环境, 使用哨兵就够了, 机器需要的不多, 同时运维也比较省心.

============================
redis 的基本概念
============================

redis 是 KV 数据库, redis 默认情况下共有 16 个数据库, 不同数据库内的 key 是可以重名的, 在同一个数据库中 key 是唯一的.
修改文件 redis.windows-service.conf 的 databases 参数, 设置数据库的数量.
databases 16

dbsize 命令, 可以获取当前 db 的 key 的数量.
select 命令, 切换当前数据库, 登陆后默认进入的是 index 为 0 的 db.
flushdb 命令, 清空当前数据库中所有的 key.

keys * 命令,列出所有的key
type key 命令,得到key的类型(string或list/hash或set等)

key 的命名规范:
redis 的 key 名称可以非常随意的, key 名可以是任意英文字母和字符的组合, 包括中文也可以作为 key 名, 所以项目中, 最好确立 key 的命名规范, 比如:
namespace:keyname
namespace:keygroup.keyname

============================
redis-cli 常用命令
============================
redis-cli 工具是自带的命令行工具, 有很好的命令提示功能, 使用 tab 键可以补齐命令名, redis-cli 的命令是大小写不敏感的.

登陆命令行是:
redis-cli -h 127.0.0.1 -p 6379
redis-cli -h 127.0.0.1 -p 6379 -a "Redis!123"
redis-cli -h 127.0.0.1 -p 6379 --raw
其中, -a 参数指定密码
--raw 参数, 只有带上该参数, 命令行工具才能显示中文字符, 否则将显示\xaa 这样的格式.

使用 ping 命令, 检查连接是否 OK.
127.0.0.1:6379> ping
(error) NOAUTH Authentication required.

使用 auth 命令, 输入登陆口令:
127.0.0.1:6379> auth "Redis!123"
OK

============================
redis 基本的 key value 操作
============================
使用 set 命令, 设置一个 key-value
127.0.0.1:6379> set platform:info "simple information"
OK

使用 get 命令, 获取 key 的 value
127.0.0.1:6379> get platform:info
"simple information"

使用 mset 命名, 一次性设置多个 key-value 对.
127.0.0.1:6379> mset platform:version 1 platform:info "simple information"
OK

使用 mget 命令, 一次性获取多个 key 对应的 values
127.0.0.1:6379> mget platform:version platform:info
1) "1"
2) "simple information"

对于数值型的字符串, 可以使用下面命令进行加减操作
decr 自减 1
incr 自增 1
decrby 减去一个整数, 可正可负
incrby 加上一个整数, 可正可负
incrbyfloat 加上一个浮点数, 可正可负

使用 keys 命令查询 Redis 中的所有 key, keys 支持通配符 * 和 ?.

使用 exists 命令可以判断指定的 key 是否存在, 返回值为 0 代表不存在, 1 代表存在. exists 命令可以有多个 keys 作为参数, 返回值是所有单个返回值之和.

使用 del 命令 可以删除指定的 key, 返回值为 1 代表成功, 0 代表不成功, 不成功很可能是因为指定的 key 不存在. del 命令也可以有多个 keys 作为参数, 返回值是所有单个返回值之和.

使用 expire 命令设定要给 key 的过期时间 (单位为秒), 返回值为 1 代表成功.
127.0.0.1:6379> expire a 10
(integer) 1

使用 ttl 命令可以查询指定 key 的剩余存活时间 (秒), 范围值为-1 代表该 key 永远有效, -2 代表该 key 已经被删除.

============================
redis List 操作
============================
除了字符串可以作为 value, list 也可以作为 key 的 value, Redis 的 List 是通过链表实现的, 所以插入元素速度很快, 但按照索引检索的速度较慢.

rpush 命令, 可以将多个值插入到 list 的尾部.
127.0.0.1:6379> rpush platform:history 20180721 20180722
(integer) 2

lpush 命令, 可以将多个值插入到 list 的头部.
127.0.0.1:6379> lpush platform:versions 1 2 3 4
(integer) 4

lrange 命令, 可以返回指定下表范围的元素值, 第 1 个参数是 key, 第 2 个参数是起始下标, 第三个参数是结束下标.
lrange 命令中的下标也可以用负数标识, -1 代表倒数第一个下标, -2 代表倒是第 2 个下标, 和 python 语言类似.
127.0.0.1:6379> lrange platform:history 0 1
1) "20180721"

llen 命令, 可以求得 list 的长度

rpop 命令是从 list 尾部取出一个元素, 如果 list 已经为空, 则返回 nil.
lpop 命令是从 list 头部取出一个元素, 如果 list 已经为空, 则返回 nil.

blpop 命令是以阻塞的形式从 list 尾部取一个元素, 如果 list 已经为空, 该命令一致处于等待, 直到列表中有了新的元素.
brpop 命令是以阻塞的形式从 list 尾部取一个元素, 如果 list 已经为空, 该命令一致处于等待, 直到列表中有了新的元素.
blpop 和 brpop 命令常用于消息服务需求, 他们能自动监听队列并取出一个元素.
blpop 和 brpop 命令最后一个参数是阻塞超时秒数, 0 为永远不超时; 前面的参数是 list key 清单, 可以是多个 key, 命令取出第一个非空 list 列表的元素.
127.0.0.1:6379> blpop platform:history platform:history2 0
1) "platform:history"
2) "20180723"

============================
redis Hash 操作
============================
Redis 本身是一个 Key-Value 数据库, 而 Value 也可以是一个 dictionary, 为了避免混淆, 将dictionary 中的 key 用 field 术语表示. Spring Boot 就使用该结构保存 Spring Session 数据, 以实现 web 系统的水平扩展.

hset key field value 命令, 设定 field 值.
hget key field 命令, 获取 field 值.
hexists key field 命令, 判断 field 是否存在.
hkeys key 命令, 列出指定 key 的 hashmap 的所有 field.
hgetall key 命令, 返回所有字段名和字段值.
hdel key field 命令, 删除指定 field.
hincrby key field byvalue 命令, 字段值加上一个整数
hincrbyfloat key field byvalue 命令, 字段值加上一个浮点数.

============================
redis Set 操作
============================
Redis 也存储 set 型和 sorted set 型值, 可以进行集合的交集和并集操作, 这里仅介绍 set 型操作.
sadd key member1 [member2..] 命令, 向集合中增加元素
smembers key 命令, 列出集合的所有元素
sinter key1 key2 命令, 两集合求交集.
sunion key2 key2 命令, 两集合求并集.
sdiff key1 key2 命令, 两集合求差集.
sinter key1 key2 key3 命令, 将 key2 和 key3 的交集存到 key1 中.
sunion key2 key2 key3 命令, 将 key2 和 key3 的并集的交集存到 key1 中.
sdiff key1 key2 key3 命令, 将 key2 和 key3 的差集的交集存到 key1 中.
smove key1 key2 memeber 命令, 从 key1 中移动 member 到 key2 集合.
sismember key memeber 命令, 判断元素是否在集合中.

============================
Redis的细节资料
============================
https://www.w3cschool.cn/redis_all_about/redis_all_about-sfc726u6.html
http://doc.redisfans.com/
Redis创建高可用集群教程【Windows环境】https://blog.csdn.net/u010648555/article/details/79427608

SpringBoot系列: Redis基础的更多相关文章

  1. Spring-Boot之Redis基础

    Spring-Boot之Redis基础 准备 Redis下载地址:github.com/MSOpenTech/redis/releases Redis数据库的默认端口号是 6379 开启Redis服务 ...

  2. [转帖]《吊打面试官》系列-Redis基础

    <吊打面试官>系列-Redis基础 https://www.cnblogs.com/aobing/archive/2019/11/07/11811194.html   你知道的越多,你不知 ...

  3. SpringBoot系列——Redis

    前言 Redis是一个缓存.消息代理和功能丰富的键值存储.StringBoot提供了基本的自动配置.本文记录一下springboot与redis的简单整合实例 官方文档:https://docs.sp ...

  4. SpringBoot系列: Redis 共享Session

    Web项目Session管理是一个很重要的话题, 涉及到系统横向扩展, SpringBoot已经为共享Session很好的解决方案, 这篇文章关注使用Redis共享会话, 同时这也是最常用的方法. = ...

  5. 《吊打面试官》系列-Redis基础

    你知道的越多,你不知道的越多 点赞再看,养成习惯 前言 Redis在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在Redis的使用和原理方面对小伙伴们进行360°的刁难.作为一个在互联 ...

  6. 《吊打面试官》系列-Redis基础知识

    前言Redis在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在Redis的使用和原理方面对小伙伴们进行360°的刁难.作为一个在互联网公司面一次拿一次offer的面霸(请允许我使用一下 ...

  7. 《吊打面试官》系列-Redis哨兵、持久化、主从、手撕LRU

    你知道的越多,你不知道的越多 点赞再看,养成习惯 前言 Redis在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在Redis的使用和原理方面对小伙伴们进行360°的刁难.作为一个在互联 ...

  8. 《吊打面试官》系列-Redis常见面试题(带答案)

    你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源,有面试点思维导图,欢迎[Star]和[完善] 前言 Redis在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在 ...

  9. SpringBoot系列——Spring-Data-JPA(究极进化版) 自动生成单表基础增、删、改、查接口

    前言 我们在之前的实现了springboot与data-jpa的增.删.改.查简单使用(请戳:SpringBoot系列——Spring-Data-JPA),并实现了升级版(请戳:SpringBoot系 ...

随机推荐

  1. 【AtCoder2134】ZigZag MST(最小生成树)

    [AtCoder2134]ZigZag MST(最小生成树) 题面 洛谷 AtCoder 题解 这题就很鬼畜.. 既然每次连边,连出来的边的权值是递增的,所以拿个线段树xjb维护一下就可以做了.那么意 ...

  2. [leetcode]Weekly Contest 68 (767. Reorganize String&&769. Max Chunks To Make Sorted&&768. Max Chunks To Make Sorted II)

    766. Toeplitz Matrix 第一题不说,贼麻瓜,好久没以比赛的状态写题,这个题浪费了快40分钟,我真是...... 767. Reorganize String 就是给你一个字符串,能不 ...

  3. jmeter生成测试报告

  4. luogu4728 双递增序列 (dp)

    设f[i][j]表示以i位置为第一个序列的结尾,第一个序列的长度为j,第二个序列的结尾的最小值 那么对于f[i][j],有转移$f[i+1][j+1]=min\{f[i+1][j+1],f[i][j] ...

  5. 定时自动从FTP服务器取数据脚本

    环境需求:某些情况下经常需要向FTP服务器取文件,可以用定时任务执行简单脚本自动去取相应文件. 一般用法: ~]# ftp  IP地址  端口 //ftp命令可以通过yum install ftp方式 ...

  6. Mybatis 缓存失效的几种情况

    1 不在同一个sqlSession对象中 下面比较下载同一个sqlSession和不在同一sqlSession下面的两种情况: 同一sqlSession: @Test public final voi ...

  7. 以太坊、Hyperledger Fabric和Corda,哪个更好?

    原创: Philipp Sandner 区块链前哨 昨天 编译|盖磊编辑|前哨小兵甲区块链前哨导语: 我们分析了 Hyperledger Fabric,R3 Corda 和以太坊这三种分布式账本技术间 ...

  8. react-native中的动画

    先看效果 这个一个渐渐显示的动画,代码如下 import React from 'react'; import { Animated, Text, View } from 'react-native' ...

  9. ICPC模板编写 latex

    推荐模板 https://www.jianshu.com/p/28552706e811 另外导入C文件: \lstinputlisting[language=C]{xxx.c} .c文件编码方式为UT ...

  10. jQuery、layer实现弹出层的打开、关闭功能实例详解

    本文主要介绍了jQuery.layer实现弹出层的打开.关闭功能,需要的朋友可以参考下,希望能帮助到大家. 打开弹出层: 在list页面带入layer.js 在list页面点击时,弹出form弹出层, ...