Redis的基本知识
Redis:
1. 概念:开源的高性能键值对数据库,
提供多种键值对数据类型:字符串、(离散)哈希、列表、集合、有序集合类型
内部储存与持久化:内存的读写速度远高于磁盘;自身提供持久化机制(RDB、AOF)
Redis的字符串类型
字符串类型是Redis中最基本的数据类型,可以储存任何形式的字符串:二进制数据,JSON化的对象、字节数组等。一个字符串类型的最大存储空间为512M
2. 对数据的操作命令:
SET key1 value1
GET key1
EXPIRE key1 10 设置key1的生命周期为10秒
TTL key1 查看key1的剩余生命周期,返回:-1代表永久,-2代表已经失效
PEXPIRE key1 10000 设置key1的生命周期为10000毫秒
MSET key1 val1 key2 val2 设置多个键值对
MGET key1 key2 获取多个键所对应的值
APPEND key1 234 向key1的末尾追加234,如不存在这个键则相当于设置这个键值,返回结果是追加后字符串的总长度
STRLEN key1 获得key1的值的字符串的总长度,不存在返回0
存储的是整数时:
INCR key1 在原来的值上递增1
INCRBY key1 5 在原来的值上递增5
3. Redis客户端的使用:Jedis
方法1:
Jedis jedis = new Jedis(“127.0.0.1”,6379 ); 新建,设置IP、端口
//Jedis.auth(“123”); 配置访问密码(如有密码需要这句代码,另外只有全局密码,无针对各数据库的)
Jedis.set(“key1”,”val1”); 设置键值对
String value = jedis.get(“key1”); 根据键获取值
Jedis.close(); 关闭连接
方法2:连接池
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); 新建连接池配置对象
jedisPoolConfig.setMaxTotal(50); 设置最大连接数
JedisPool jedisPool = new JedisPool(jedisPoolConfig,”127.0.0.1”,6379); 新建连接池对象
Jedis jedis = jedisPool.getResource(); 从连接池中获取连接
//Jedis.auth(“123”); 如有密码需要配置
String value = jedis.get(“key1”);
JedisPool.returnResource(jedis); 调用连接池回收连接
jedisPool.close(); 释放连接池
方法3:集群式连接池:
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); 新建连接池配置对象
jedisPoolConfig.setMaxTotal(50); 设置最大连接数
List<JedisShardInfo> shards = new ArrayList<JedisShardInfo>; 定义集群信息
shards.add(new JedisShardInfo(“127.0.0.1”,6379));
shards.add(new JedisShardInfo(“127.0.0.1”,6380));
定义集群连接池
ShardedJedisPool shardedJedisPool = new SaradedJedisPool(jedisPoolConfig,shards);
ShardedJedis shardedJedis = null;
try{
shardedJedis = shardedJedisPool.getResource(); 从连接池获取jedis分片对象
}
相关操作………..
catch(Exception e){
e.printStakTrace();
} finally{
If(null != shardedJedis){
shardedJedis.close() 将jedis分片放回池中
}
}
sharedeJedisPool.close();
4. 多节点Redis(无集群的实现)
缺点:该方法在添加新的Redis节点时会出现问题,因为它会重新计算分配hash值,有可能会获取不到原来的值。
5. Hash结构
5.1. 结构说明
注意:Hash中存储的字段和值只能是字符串。
5.2. 基本命令使用
HSET key1 field1 val1
HGET key1 field1
HMSET key1 field1 val1 field2 val2
HMGET key1 field1 field2
HGETALL key
注意:HSET不会区分插入和更新操作,如操作是插入则返回1,更新返回0
5.3. Jedis中操作Hash结构
5.4. 判断字段是否存在
5.5. 增长和删除
5.6. 只获取字段名或字段值
5.7. 获取字段数量
5.8. Redis配置文件
达到内存限制后的处理策略:
5.9. 相关的推荐
Redis内存使用优化与存储
http://www.infoq.com/cn/articles/tq-redis-memory-usage-optimization-storage
Redis复制与可扩展集群搭建
http://www.infoq.com/cn/articles/tq-redis-copy-build-scalable-cluster
Redis 设计与实现
https://redisbook.readthedocs.org/en/latest/
SpringSource发布Spring Data Redis 1.0.0
http://www.infoq.com/cn/news/2012/01/spring-data-redis-1-0-0
Redis内存存储结构分析
http://www.searchtb.com/2011/05/redis-storage.html
6. Redis的持久化
6.1. RDB方式
6.1.1. 如何禁用RDB持久化
禁用RDB的触发条件即可。
6.1.2. RDB持久化过程
6.2. AOF方式
6.2.1. 原理
开启AOF:
6.2.2. AOF文件内容
注意:查询数据的操作不做记录。
6.2.3. AOF文件的优化
优化后:
6.2.4. 文件到磁盘的机制
参考资料:《传智播客》
Redis的基本知识的更多相关文章
- 新手初学Redis之基础知识命令
笔者最初接触Redis是因为了解了一些nosql方面的知识,觉得nosql是一个很有意思的方面.像其中的mongodb,redis等等.当初也没有深入的去了解Redis,直到自己前段时间在写一个web ...
- $Django redis内存数据库 (知识回顾cmd切换目录)
知识小回顾 #切换盘 C:\Users\WangDong>f: F:\> #切换文件 F:\>cd redis F:\redis> #返回上一级 F:\DJ\dj8>cd ...
- Redis的好处知识
参考文章 http://www.cnblogs.com/wupeiqi/articles/5132791.html 使用Redis有哪些好处? () 速度快,因为数据存在内存中,类似于HashMap, ...
- redis相关缓存知识
Redis redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorte ...
- Redis系列-冷知识
下面是一些看了,但觉得用处不大,不记下又可惜的东西. Redis删除过期数据 redis通过expire/expireat(秒为单位)或者pexpire/pexpireat(毫秒为单位)来设置key的 ...
- Redis集群知识解析
redis集群在启动的时候就自动在多个节点间分好片.同时提供了分片之间的可用性:当一部分redis节点故障或网络中断,集群也能继续工作.但是,当大面积的节点故障或网络中断(比如大部分的主节点都不可用了 ...
- Redis Cluster 理论知识
http://www.ttlsa.com/redis/redis-cluster-theoretical-knowledge/ Redis 集群的 TCP 端口(Redis Cluster TCP p ...
- redis的相关知识
1. 依赖包安装 pom.xml 加入: <!-- redis cache related.....start --> <dependency> <groupId> ...
- Redis数据结构底层知识总结
Redis数据结构底层总结 本篇文章是基于作者黄建宏写的书Redis设计与实现而做的笔记 数据结构与对象 Redis中数据结构的底层实现包括以下对象: 对象 解释 简单动态字符串 字符串的底层实现 链 ...
随机推荐
- SpringBoot后台接收前台的字符串数据
需求 将前台传入的字符串数据转为int类型. 操作 在pom.xml中添加引用. <dependency> <groupId>org.apache.commons</gr ...
- WEB API 系列(二) Filter的使用以及执行顺序
在WEB Api中,引入了面向切面编程(AOP)的思想,在某些特定的位置可以插入特定的Filter进行过程拦截处理.引入了这一机制可以更好地践行DRY(Don’t Repeat Yourself)思想 ...
- jmeter接口自动化测试
一.正常单个接口 1.自定义变量设置服务器地址ip和端口 2.可以正则表达式提取取出token值设置为请求头里 如图 二.接口请求参数涉及取参(单个或多值) 提取多个值参数,用Json提取器可以直接提 ...
- BASE64加解密
- JDK 自带 - Commons Codec 地址:http://commons.apache.org/proper/commons-codec/download_codec.cgi - Bou ...
- Java基础知识盘点(二)- 集合篇
List和Set区别 List和Set都是继承Collection接口 List特点:元素有放入顺序,元素可重复 Set特点:元素无放入顺序,元素不可重复 Set和List对比: Set:检索元素效率 ...
- springboot2.0 JPA配置自定义repository,并作为基类BaseRepository使用
springboot2.0 JPA配置自定义repository,并作为基类BaseRepository使用 原文链接:https://www.cnblogs.com/blog5277/p/10661 ...
- PHP——laravel之DB类->查询
DB类之查询: 满足条件的全部获取:DB::table("表名")->where("name",">","1" ...
- npm ERR! File exists: /XXX/xxx npm ERR! Move it away, and try again.
今天抽空将我的静态服务 ks-server 之前留下的 bug(在node低版本情况下报错)维护了一下. 当我重新 npm link 时,如下错误: npm WARN ks-server@1.0.2 ...
- centos7 mysql数据库的安装与使用
一:数据库的安装 第一步 下载数据库到主机,, 第二步 通过xshell将数据库压缩包上传至centos7虚拟主机(#注意:服务器主机需下载上传工具lrzsz 命令:yun -y install ...
- Keras + LSTM 做回归demo
学习神经网络 想拿lstm 做回归, 网上找demo 基本三种: sin拟合cos 那个, 比特币价格预测(我用相同的代码和数据没有跑成功, 我太菜了)和keras 的一个例子 我基于keras 那个 ...