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.   文件到磁盘的机制

参考资料:《传智播客》

时间: 2024-11-29 01:36:25

Redis的基本知识的相关文章

Python3分布式爬虫(scrap+redis)基础知识和实战详解

背景 随着业务需求的变化,大规模爬虫遇到各种问题.python爬虫具有先天优势,社区资源比较齐全,各种框架也完美支持.爬虫性能也得到极大提升.本次分享从基础知识入手,涉及python 的两大爬虫框架pyspider.scrapy,并基于scrapy.scrapy-redis 做了分布式爬虫的介绍(直接粘贴的ppt截图)会涉及 redis.mongodb等相关知识. 一.前沿 1.1 爬虫是什么? 网络爬虫(又被称为网页蜘蛛,网络机器人),是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本.

redis其他相关知识

Redis的安全性 因为redis速度很快,所以在一台比较好的服务器下,一个外部用户在一秒内可以进行15W次的密码尝试,这意味着你需要设定非常强大的密码来防止暴力破解. vim编辑redis.conf文件,找到下面进行保存修改 #requirepass foobared requirepass    **** 重启服务器 pkill redis-server 下次登录需要输入密码. 输入 auth [密码] 还有一种直接登录的授权方式,   redis-cli -abhz 主从复制 主从复制 1

Redis集群知识解析

redis集群在启动的时候就自动在多个节点间分好片.同时提供了分片之间的可用性:当一部分redis节点故障或网络中断,集群也能继续工作.但是,当大面积的节点故障或网络中断(比如大部分的主节点都不可用了),集群就不能使用. 所以,从实用性的角度,Redis集群提供以下功能: 自动把数据切分到多个redis节点中 当一部分节点挂了或不可达,集群依然能继续工作 Redis集群的TCP端口 redis集群中的每个节点都需要建立2个tcp连接,监听这2个端口:一个端口称之为“客户端端口”,用于接受客户端指

Redis学习---基础知识考核

[原文]https://www.toutiao.com/i6566017785078481422/ 0.redis是什么? redis是nosql(也是个巨大的map) 单线程,但是可处理1秒10w的并发(数据都在内存中) 使用java对redis进行操作类似jdbc接口标准对mysql,有各类实现他的实现类,我们常用的是druid 其中对redis,我们通常用Jedis(也为我们提供了连接池JedisPool) 在redis中,key就是byte[](string) redis的数据结构(va

redis的基础知识

select切换数据库 remoteSelf:0>select 0 "OK" dbsize查看当前数据库的key数量 remoteSelf:0>dbsize "2" keys查看所有的key remoteSelf:0>keys * 1) "SUBCRIBEMAP" 2) "test" flushdb删除当前库所有的key flushall删除所有库所有的key redis索引都是从0开始 默认端口是6379

redis实战 -- python知识散记

-- time.time() -- row.to_dict() -- json.dumps(row.to_dict()) #!/usr/bin/env python import time def schedule_row_cache(conn,row_id, delay) : conn.zadd('delay:', row_id, delay) conn.zadd('schedule:', row_id, time.time()) def cache_rows(conn) : while no

php高级进阶系列文章--第五篇(redis基础知识复习)

在实际工作中不仅需要使用到非常重要的关系型数据库mysql,同时也需要使用到redis,memcached,mongodb等进行数据存储,完成特定的产品需求,本节先复习redis的基础知识,高深部分后续会继续探讨 1,redis与其他的key-value形式缓存数据库的特点: 支持数据持久化,将内存中的数据保存到磁盘中,重启的时候再次加载进行使用 redis不仅有key-value格式的数据,同时也有list,set,zset,hash格式的数据结构存储数据 redis支持数据的备份,即Mast

redis实战笔记(1)

第1章 初识Redis 本章主要内容 1.Redis与其他软件的相同之处和不同之处 2.Redis的用法 3.使用Python示例代码与Redis进行简单的互动 4.使用Redis解决实际问题 Redis是一个远程内存数据库, 它不仅性能强劲, 而且还具有复制特性以及为解决问题而生的独一无二的数据模型. Redis提供了 5种不同类型的数据结构, 各式各样的问题都可以很自 然地映射到这些数据结构上: Redis的数据结构致力于帮助用户解决问题, 而不会像其他数据库那样, 要求用户扭曲问题来适应数

[Redis]Redis 概述及基本使用规范.

1 nosql的简介 1.1 nosql简介 随着互联网Web2.0网站的兴起,传统的关系数据库在应付Web2.0网站,特别是超大规模和高并发的SNS类型的Web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,如: 1.1.1 对数据库高并发读写的需求 网站要根据用户个性化信息来实时生成动态页面和提供动态信息,所以基本上无法使用动态页面静态化技术,因此数据库并发负载非常高,往往要达到每秒上万次读写请求.关系数据库应付上万次SQL查询还勉强顶得住,但是应付上千万次SQL写数据请求,硬盘