Redis
Posted 六小扛把子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis相关的知识,希望对你有一定的参考价值。
NoSsql not only sql
KV + Cache + Persistence
文档类数据库 MangDB
Redis (远程字典服务器)非关系型数据库
默认端口号 : 6379
基于内存的数据库,存储缓存用的数据。完成高并发,高速读写
Redis是一种key-value存储系统 value的值可以是多种数据结构类型
用作缓存数据理由:传统数据库,进行大量读取操作时效率很低。存储redis,就是将数据直接存储在内存上,提高开发效率。存储的数据为,数据量小,需要大量访问,而且主要进行读操作。(例如用户登陆的信息)
使用Redis的步骤:
- 添加redis依赖
- 配置redis连接池
- 导入RedisTemplate依赖 介入Spring帮助redis对java对象操作
1配置数据库连接池。(使用Spring配置JedisPoolConfig对象)
2为连接池配置工厂模型
3配置RedisTemplate(将java对象序列化后进行存储,将序列化取出反序列化Java对象)
(pojo类需要继承Serializable接口,完成序列化)
- 支持数据持久化
- 以多种数据类型存储
- 所有操作原子性,支持部分事务
Redis常用指令:
set : set k1 v1
get : get k1
select : Redis默认含有16个数据库,下标从0开始。使用 select ? 来切换数据库
DBsize: 显示当前数据库的key数量
FlushDB : 清除当前数据库所有key FlushALL 所有库清空
Key关键字:
kes * : 显示当前库所有key
exists key1 : key1 是否存在
move : move key1 2; 把key1移到3号库
ttl : ttl key1; 查看key1剩余时间 -1表示永不过期 -2已过期
expire : expire key1 10; 设置key1存活时间
type : 查看key1数据类型 type key1;
Redis支持五种数据类型 : String Hash List Set Zset(sorted set)
String:最基本数据类型,二进制安全(可以包含任何数据),最大存储512MB
常用: set/get/del/append/strlen
incre : 作用在数字,自增1 incre k1; incre k1 3 ; k1自增3
decre : 作用在数字,自减
getrange : 范围内截取字符串 getrange key1 0 3; key1字符串从0到3获取
setrange : 范围内设置 setrange key1 0 xxx; 将key1 的值从0设置值为xxx
setex(set with expire) : set的同时设置存活时间 setex key1 10 v1; 设置key1 v1 存货10秒
setnx(set if not exist) : setnx key1 v1; 如果key1不存在就设置进去,如果存在就不设置
mset : mset k1 v1 k2 v2 k3 v3;
mget : mget k1 k2 k3
指令:set key value // get key
Hash: String类型以键值对的方式存储 类似于 HashMap<String,Object>
Hset : hset user id 101;
Hget :hget user id;
Hmset : hmset user1 id 101 name zhangsan age 18;
Hmget :hgetall user1;
hdel :hdel user name;
hkeys : hkeys user1;
hvals : hvals user1;
应用:存储,读取,修改用户属性,只修改某一个属性值
指令: HMset key k1 v1 k2 v2 // Hget key k1 Hget key k2
List: String类型简单的双向链表 (排列顺序类似一个栈)
*Lpush: 从左往右插入 lpush key1 1 2 3 4 5
*Rpush: 从右往左插入
*LRange: 查看链表元素 LRange key1 0 -1; 查看链表key1 全部元素
LPop: 从左弹出
Rpop: 从右弹出
LRem : 删除链表中n个value Lrem k1 3 v; 删除k1中三个v
Ltrim :截取链表指定范围的值 再赋值给链表
应用:最新消息排行等功能(基于时间线),消息队列
指令:Lpush key “fuck” ; lrange key 0 10
Set: String类型无序无重复,底层由Hash表实现,为集合提供了交集,并集,差集等操作
应用:共同好友,好友推荐,(利用唯一性)统计网站的所有ip
Sadd: 添加
Smembers : 显示所有
Srandmember : 随机取出几个 Srandmember key1 3; 从k1中随机取出三个
Spop : 随机出栈
Sdiff: 差集
Sinter :交集
Sunion : 并集
指令:Sadd key1 value; Smembers key1;
Zset:String类型有序无重复集合 每个元素都关联一个double类型的分数score,根据score排序
Zadd :
Zrange :
Zrange with score
应用:排行榜,带权重的消息队列
指令: Zadd key score value; Zrange key 0 10
以上是关于Redis的主要内容,如果未能解决你的问题,请参考以下文章