Redis学习笔记

Redis


  1. 概念

    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等。
  2. 下载安装

    地址http://www.redis.net.cn中文

    官网:https://redis.io

    软件版的文件下载

    压解直接可以使用

    • redis.windows.conf 配置文件
    • redis-cli.exe 客户端
    • redis-server.exe 服务器端
  3. 命令操作

    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

  1. 持久化操作

    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不进行持久化

  2. 使用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");//进行相关操作
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值