============================
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. (转)SpringBoot系列—Redis使用

    http://blog.csdn.net/jeofey/article/details/73468192 SpringBoot对Redis的支持是通过spring Data redis 来时闲的,使用 ...

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

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

  3. redis系列-redis基础知识总结

    一.Redis 设计架构 1.1.Redis整体架构和redis学习思路 上图是我理解的redis单机工作的一个概图. 我尝试从以下基本内容来学习redis: 单机redis 就单机版而言,我们可以从 ...

  4. 《吊打面试官》系列-Redis常见面试题

    前言 Redis在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在Redis的使用和原理方面对小伙伴们进行360°的刁难. 作为一个在互联网公司面一次拿一次Offer的面霸,打败了无数竞 ...

  5. java春招面试冲刺系列:redis基础知识详细解析

    目录 学习计划 学习笔记 百问 redis在什么情况下会变慢? 单线程的redis,如何知道要运行定时任务? 学习计划 Redis的介绍.优缺点.使用场景 Linux中的安装 常用命令 Redis各个 ...

  6. SpringBoot系列十:SpringBoot整合Redis

    From: https://www.cnblogs.com/leeSmall/p/8728231.html 声明:本文来源于MLDN培训视频的课堂笔记,写在这里只是为了方便查阅. 1.概念:Sprin ...

  7. Springboot系列之Shiro、JWT、Redis 进行认证鉴权

    Springboot系列之Shiro.JWT.Redis 进行认证鉴权 Shiro架构 Apache Shiro是一个轻量级的安全框架 Shiro可以非常容易的开发出足够好的应用,其不仅可以用在Jav ...

  8. SpringBoot整合Redis 之 StringRedisTemplate、RedisTemplate 基础

    SpringBoot 整合 Redis 环境准备 引入依赖 配置文件 StringRedisTemplate 基本使用 Key 常用操作 String 常用操作 List 常用操作 Set 常用操作 ...

  9. [SpringBoot系列]基础过渡与夯实(基础配置)

    文章目录 SpringBoot基础配置 属性配置 配置文件分类 配置文件优先级 yaml文件 yaml数据读取 读取单一数据 读取全部数据 读取对象数据 yaml文件中的数据引用 拓:自动提示功能消失 ...

最新文章

  1. EBS服务重启脚本(应用和数据库)
  2. HDFS源码分析心跳汇报之数据结构初始化
  3. 【NLP】Transformer及其变种
  4. foxpro 打印 字体_【部编版同步复习】16年级上册期中预测卷,可打印!
  5. kali mysql停止服务器_从零开始:手把手教你黑客入门攻破服务器并获取ROOT权限...
  6. IOS开发学习笔记024-UIButton和UIImageView的区别
  7. C#LeetCode刷题之#686-重复叠加字符串匹配(Repeated String Match)
  8. android porting usb audio,android - 在android中启动时找不到audio-hal-2-0 - 堆栈内存溢出...
  9. JAVA day06 继承,super,方法的重写,抽象类
  10. WOFF字体的Mime类型?
  11. [golang 易犯错误] golang 局部变量初始化:=的陷阱
  12. 汉语字典_Android版最新官方版,汉语字典专业版2020
  13. 【元胞自动机】基于matlab界面聚合元胞自动机模拟【含Matlab源码 2004期】
  14. HTML5中常见的新语义化标签
  15. html的盒子随页面动,JavaScript实现跟随鼠标移动的盒子
  16. Fedora 20 安装
  17. ubuntu桌面之路-续三
  18. win10系统下JAVA之JDK压缩包制作方法及安装教程(环境配置)
  19. 大数据分析案例-基于随机森林算法构建新闻文本分类模型
  20. JSONException: syntax error, expect [, actual string, pos 0, fieldName null

热门文章

  1. jQuery遇到问题的小记
  2. bat 批量提取指定目录下的文件
  3. 160613、MyBatis insert操作返回主键
  4. C#笔记2__Char类、String类、StringBuilder类 / 正则表达式 /
  5. php 多只能上传20个文件解决办法,修改php.ini 的max_file_uploads
  6. React-Context
  7. 设计模式复习-外观模式
  8. hdu4974 简单题
  9. 【JetPack】kotlin-android-extensions 插件 ( 视图绑定简单用法 )
  10. c++入门之运算符重载