Redis学习小记 - Redis基础及整合
-
NoSQL分类
NoSQL(泛指非关系型的数据库)分为一下四类:
- 键值(Key-Value)存储数据库:Redis
- 列存储数据库
- 文档型数据库
- 图形(Graph)数据库
-
Redis入门
-
Redis是什么
Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache, and message broker. -
Redis能干嘛
- 内存存储、持久化(rdb、aof)
- 效率高、可以用于高速缓存
- 发布订阅系统
- 地图信息分析
- 计时器、计数器(浏览量1 )
- …
-
特性
- 多样的数据类型
- 持久化
- 集群
- 事务
- …
官网:https://redis.io/
推荐在linux上开发
-
-
Redis安装
- window github:https://github.com/tporadowski/redis/releases
- linux 略
-
Redis使用
- 切换数据库| SELECT 1 默认有16个数据库
- 查看数据库大小| DBSIZE [-n]
- 查看数据库所有的key| KEYS *
- 清空数据库| FLUSHDB /FLUSHALL
- 查看键是否存在| EXISTS [key name]
- 移动键到某个数据库| MOVE KEY -n
- 设置键的过期时间| EXPIRE [key name] -s
- 查看键的过期时间| TTL [key name]
- 查看键的类型| TYPE [key name]
- 设置过期时间- EXPIRE 设置过期时间
-
Redis五大数据类型
- strings
- APPEND NAME VALUE 追加字符串
- STRLEN 字符串长度
- INCR | DECR KEY2(仅限integer)
- RANGE 截取字符串GETRANGE 替换SETRANGE
- setex ,setnx 设置过期时间,设置不存在创建
- MSET MGET
- 对象
- hashes
- HSET HGET HGETALL 设置 获取数据
- HMGET HMSET
- HDEL 删除指定的key
- HLEN 获取hash的字段常量
- HEXISTS HASH FIELD 判定字段是否存在
- HKEYS / HVALS 获取所有的key / values
- HINCRBY
- lists
- LINDEX 定位
- [L/R]PUSH POP 添加 删除
- LREM 移除
- LTRIM 修剪
- LRANGE 范围
- LSET 将指定下标的值替换
- LINSERT 插入
- sets
- SADD 增加
- SMEMBERS 查看set成员
- SMOVE 移动set的值到另一个set集合
- SISMEMBER 判断值是否在set中
- SDIFF SET1 SET 差集
- SINTER SET1 SET 交集
- SUNION SET1 SET 并集
- SCARD 获取集合元素个数
- Zset 在set的基础上,增加了一个值
- ZADD
- ZRANGE MYSET 0 -1
- ZRANGEBYSCORE MYSET -INF +INF WITHSCORES 从小到大排序
- ZREVRANGE MYSET 0 -1 WITHSCORES 从高到低排序
- 移除指定元素 ZREM
- ZCARD 获取有序集合元素个数
- ZCOUNT MYSET 0 1 获取区间指定数量
- strings
-
三大特殊数据类型
-
geospatial 地理位置 本质zset
- GEOADD 添加地理位置(经度,纬度,名称)添加到指定的键
GEOADD chia:city 116.40 30.90 beijin
GEOPOS 获取指定城市的经度纬度
GEODIST chia:city beijin shanghai km
- m for meters.
- km for kilometers.
- mi for miles.
- ft for feet.
GEORADIUS chia:city 100 30 400 km
-
hyperloglogs 基数
- PFADD KEY A B C D
- PFCOUNT KEY
- PFMERGE KEY1 KEY KEY2 合并到KEY1
-
Bitmaps 位存储
- SETBIT GETBIT
- BITCOUNT
-
-
Redis事务
-
Redis 单条指令保证原子性、事务不保证原子性
-
本质:一组命令的集合 Exec
-
redis事务
- 开启事务 multi
- 命令入队 。。
- 执行事务 exec
-
放弃事务 discard
-
编译型异常 代码错误,编译失败 不会执行事务的命令
-
运行时异常 其他命令正常执行
-
监控 watch
- 悲观锁
- 无论什么时候都加锁
- 乐观锁
- 不会上锁 更新数据的时候判断
- 获取version
- 更新的时候比较version 使用watch可以当作redis乐观锁操作
- 悲观锁
-
-
Jedis
- java连接redis工具
<!-- jedis--> <!-- https://mvnrepository.com/artifact/redis.clients/jedis --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.5.1</version> </dependency> <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.75</version> </dependency>
-
springboot整合
- 导入启动器依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>