Redis

Posted 六小扛把子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis相关的知识,希望对你有一定的参考价值。

NoSsql   not only sql

 

KV + Cache + Persistence

 

文档类数据库 MangDB

 

 

Redis (远程字典服务器)非关系型数据库

默认端口号 6379

基于内存的数据库,存储缓存用的数据。完成高并发,高速读写

Redis是一种key-value存储系统  value的值可以是多种数据结构类型

 

用作缓存数据理由:传统数据库,进行大量读取操作时效率很低。存储redis,就是将数据直接存储在内存上,提高开发效率。存储的数据为,数据量小,需要大量访问,而且主要进行读操作。(例如用户登陆的信息)

 

使用Redis的步骤:

  1. 添加redis依赖
  2. 配置redis连接池
  3. 导入RedisTemplate依赖 介入Spring帮助redisjava对象操作

1配置数据库连接池。(使用Spring配置JedisPoolConfig对象

2为连接池配置工厂模型

3配置RedisTemplate(将java对象序列化后进行存储,将序列化取出反序列化Java对象)

pojo类需要继承Serializable接口,完成序列化)

 

 

  1. 支持数据持久化
  2. 以多种数据类型存储
  3. 所有操作原子性,支持部分事务

 

 

 

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字符串从03获取

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 : 删除链表中nvalue   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;

 

 

ZsetString类型有序无重复集合 每个元素都关联一个double类型的分数score,根据score排序

Zadd :

Zrange :  

Zrange with score

 

应用:排行榜,带权重的消息队列

指令: Zadd key score value;   Zrange key 0 10

 

以上是关于Redis的主要内容,如果未能解决你的问题,请参考以下文章

RedisRedis 安装启动使用流程

RedisRedis 安装启动使用流程

redisredis知识点总结

redisredis知识点总结

RedisRedis高级

RedisRedis简述