码迷,mamicode.com
首页 > 其他好文 > 详细

Redis的基本知识

时间:2017-09-22 14:04:54      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:conf   自身   article   shared   开源   arc   端口   关闭   需要   

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的基本知识

标签:conf   自身   article   shared   开源   arc   端口   关闭   需要   

原文地址:http://www.cnblogs.com/zzp925/p/7574418.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!