Redis
-
概念
redis是一款高性能的NOSQL系列的非关系型数据库
与此相对的关系型数据库有下列特征:
数据之间有关联关系
数据存储在硬盘文件上
非关系数据库:redis hbase
特点:
存储key:value,
name:zhangsan
age:23
当经常查询一些不太常发生变化的数据
缓存思想解决这个问题
当缓存中没有数据时从数据库中获取
将数据放入缓存
返回数据
当缓存中有数据,直接返回
非关系数据库能独立存在电脑中,相比较map,map就要很有限
NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL"。
在现代的计算系统上每天网络上都会产生庞大的数据量。
这些数据有很大一部分是由关系数据库管理系统(RDBMS)来处理。 1970年 E.F.Codd’s提出的关系模型的论文 “A relational model of data for large shared data banks”,这使得数据建模和应用程序编程更加简单。
通过应用实践证明,关系模型是非常适合于客户服务器编程,远远超出预期的利益,今天它是结构化数据存储在网络和商务应用的主导技术。
NoSQL 是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。NoSQL的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。
与关系数据库相比特点:
优点:成本:它简单部署,基本都是开源软件
查询速度:nosql数据库将数据存储在缓存之中,而关系数据库则在硬盘之中,查询速度远远不及nosql数据库
存储数据库格式:nosql的存储格式为键值对,文本形式,图片形式,所以可以存储基本类型以及对象或者是集合等各种格式
扩展性:由于没有关系所以拓展比较方便
缺点:
维护的工具和资料有限,因为nosql是属于新的技术
不提供sql的支持,学习有一定的成本
不提供关系型数据库对事务的处理
总结两者的关系是互补的,弥补各自的特点
**REmote DIctionary Server(Redis) **是一个由Salvatore Sanfilippo写的key-value存储系统。
Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。
特点
Redis 比其他 key – value 缓存产品有以下三个特点:
- Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载到内存使用。
- Redis不仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
- Redis支持主从复制,即master-slave模式的数据备份。
性能:
- 高性能: Redis将所有数据集存储在内存中,可以在入门级Linux机器中每秒写(SET)11万次,读(GET)8.1万次。Redis支持Pipelining命令,可一次发送多条命令来提高吞吐率,减少通信延迟。
- 持久化:当所有数据都存在于内存中时,可以根据自上次保存以来经过的时间和/或更新次数,使用灵活的策略将更改异步保存在磁盘上。Redis支持仅附加文件(AOF)持久化模式。
- 数据结构: Redis支持各种类型的数据结构,例如字符串,散列,集合,列表,带有范围查询的有序集,位图,超级日志和带有半径查询的地理空间索引。
- 原子操作:处理不同数据类型的Redis操作是原子操作,因此可以安全地设置或增加键,添加和删除组中的元素,增加计数器等。
- 支持的语言: Redis支持许多语言,如ActionScript,C,C ++,C#,Clojure,Common Lisp,D,Dart,Erlang,Go,Haskell,Haxe,Io,Java,JavaScript(Node.js),Julia,Lua ,Objective-C,Perl,PHP,Python,R,Ruby,Rust,Scala,Smalltalk和Tcl。
- 主/从复制: Redis遵循非常简单快速的主/从复制。配置文件中只需要一行来设置它,而Slave在Amazon EC2实例上完成10 MM key集的初始同步需要21秒。
- 分片: Redis支持分片。与其他键值存储一样,跨多个Redis实例分发数据集非常容易。
- 可移植: Redis是用ANSI C编写的,适用于大多数POSIX系统,如Linux,BSD,Mac OS X,Solaris等。
-
下载安装
地址http://www.redis.net.cn中文
官网:https://redis.io
软件版的文件下载
压解直接可以使用
- redis.windows.conf 配置文件
- redis-cli.exe 客户端
- redis-server.exe 服务器端
-
命令操作
Redis数据库支持五种数据类型。
-
字符串(string)
-
哈希(hash)
-
列表(list)
-
集合(set)
-
有序集合(sorted set)
-
redis的数据结构:
redis存储的是:key,value格式的数据,其中key都是字符串,value有5种不同的数据结构
常见方法
字符串:
存储:set key value 获取:get key 删除:del key
哈希类型:
存储:hset key field value
获取 hgt key field
删除 hdel key field
可以反复的设置
列表类型:
可以左右添加
lpush 将元素加入列表左边,rpush 将元素添加到列表右边
lpush key value
rpush key value(key就是表名)
获取
lrange key start(0) end(-1)
删除
lpop key
rpop key
列表允许重复
集合类型set:不允许重复元素
存储:sadd key value
获取:smembers key;
删除:srem key value;
有序集合类型:sortedset
存储:zadd key score value
获取:zrange key start end
删除:zrem key value
通用操作
key * 查询所有键
get key获取某个键
type key查看key的类型
del key删除key
-
持久化操作
redis是一个内存数据库,当redis服务器重启,获取电脑重启,可以把内容的数据持久化保存到硬盘中
redis持久化机制:
rdb:默认方式,不需要进行配置啊,默认就使用这种机制
编辑redis.windows.conf文件
a after 900 sec if at least 1 key changed
save 900 1
a after 300 sec if at least 10 keys changed
save 300 10
a after 60 sec if at least 10000 keys changed
save 60 10000
重新启动redis服务器,并指定配置文件名称
在文件包目录中打开dos输入redis-server.exe redis.windows.conf
aof:日志记录方式,可以记录有一条命令的操作,可以每一次命令操作后持久化
编辑redis.windows.conf文件
appendonly on 关闭 ---------appendonly yes开启
appendfsync everysec 每隔一秒进行持久化
appendfsync no不进行持久化
-
使用java客户端操作redis
jedis:一款java操作redis数据库的工具
使用步骤:
下载:jedis的jar包,还需要commons-pool的jar包
实验如下:
Jedis jedis=new Jedis("localhost",6379); jedis.sadd("one","student"); jedis.sadd("one","teather"); jedis.sadd("one","boss"); jedis.close();
逻辑为创建连接对象,进行操作,关闭
连接池
JedisPoolConfig jedisPoolConfig=new JedisPoolConfig();//创建连接池的配置对象 jedisPoolConfig.setMaxTotal(50);//最大的链接数 JedisPool jedisPool=new JedisPool(jedisPoolConfig,"localhost",6379);//创建连接池 Jedis jedis=jedisPool.getResource();//连接池创建连接对象 jedis.set("username","doubi");//进行相关操作