Redis入门

Redis入门

  • NoSQL概述

(一)NoSQL概述

NoSQL=Not Only SQL

非关系型数据库

NoSQL主要是为了解决高并发读写操作(High Performance)、海量数据的高效率存储和访问(Huge Storage)、高可扩展性和高可用性(High Scalability & High Availability)

  • NoSQL数据库的四大分类
  • 键值(Key-Value)存储
  • 列存储
  • 文档数据库
  • 图形数据库

四类NoSQL数据库比较四类NoSQL数据库比较

(二)Redis概述

高性能键值对数据库,支持的键值数据类型:字符串类型、散列类型、列表类型、集合类型、有序集合类型。

Redis的应用场景:
缓存(数据查询、新闻或商品内容、聊天室在线好友列表)、任务队列、网站访问统计、数据过期处理、应用排行榜、分布式集群架构中的session分离

(三)Redis的安装

  • 搭建环境
  • 虚拟机:VMware 10.0.2
  • Linux系统:CentOS-6.5
  • SSH客户端:SecureCRT 7.3, SecureFX 7.3

(四)Jedis入门(重点)
Jedis是Redis官方首选的Java客户端开发包

http://github.com/xetorthio/jedis

2种方式进行连接:(1)单实例;(2)连接池。

单实例步骤:(1)设置IP地址和端口。Jedis jedis=new Jedis(“192.168.32.130”,6379);(2)保存数据。jedis.set(“name”,”imooc”);(3)获取数据。String value=jedis.get(“name”); System.out.println(value);(4)关闭连接。jedis.close();

连接池步骤:(1)获得连接池的配置对象。JedisPoolConfig config=new JedisPoolConfig();(2)设置最大连接数、设置最大空闲连接数。config.setMaxTotal(100);config.setMaxIdle(10);(3)获得连接池。JedisPool jedisPool=new JedisPool(config,”192.168.32.130”,6379);(4)获得核心对象。Jedis jedis=null;(5)try…catch…操作。try{jedis=jedisPool.getResourse();jedis.set(“name”,”imooc”);…}

(五)Redis的数据结构
5种数据类型:字符串(String)哈希(hash)、字符串列表(list)、字符串集合(set)、有序字符串集合(sorted set)

存储String:
二进制安全的,存入和获取的数据相同;Value最多可以容纳的数据长度是512M。
set(查询)/get(获取)/getset(先获取后更改)/incr(自增1)/decr(自减1)/incrby(自增)
/decrby(自减)/append(串接)

存储Hash

String Key 和String Value的map容器

每一个Hash可以存储4294967295个键值对(2^32?)(了解即可)

  • 常用命令:
  • hdel(用于删除某张表的特定属性,例:hdel myhash username)
  • del(直接删除某张表,例:del myhash)
  • hgetall
  • hmset(设置同一张表格中的多个属性)
  • hget
  • hincrby
  • hexists
  • hlen
  • hkeys
  • hvals
**存储list** ArrayList使用数组方式 LinkedList使用双向链接方式 双向链表中增加数据 双向链表中删除数据
  • 存储list常用命令:
  • 两端添加(rpush,右端添加;lpush,左端添加;lpushx )
  • 两端弹出(lpop,rpop)
  • 扩展命令 (linsert)
  • 查看列表(lrange,负数表示从尾端查看)
  • 获取列表元素个数(llen)
  • rpoplpush,把一张表的末尾元素弹出,并放到另一张表的头部
![rpoplpush使用场景](http://oq8slqppn.bkt.clouddn.com/rpoplpush%E4%BD%BF%E7%94%A8%E5%9C%BA%E6%99%AF.jpg)![rpoplpush使用场景](https://img-blog.csdn.net/20170523095719516?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvSURvZzE0OXRhbw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) **存储set** 和List类型不同的是,Set集合中不允许出现重复的元素;Set可包含的最大元素数量是4294967295(了解即可) *使用场景* 跟踪一些唯一性数据;用于维护数据对象之间的关联关系。
  • 存储Set常用命令:
  • 增加:sadd;删除:srem;查看元素:smembers;元素是否存在:sismember;成员数量:scard;随机返回set中的成员:srandmember
  • 差集运算:sdiff
  • 交集运算:sinter
  • 并集运算:sunion
  • 差集存放到SetC中:sdiffstore SetC SetA SetB
**存储Sorted-Set** *使用场景* 大型在线游戏积分排行榜;构建索引数据;可用于热点话题、积分、排行榜等。
  • 存储Sorted-Set常用命令:
  • 增加元素和相应的分数:zadd key score1 value1 score2 value2;删除:zrem;查看元素:zcard;
  • 范围查找:zrange key 0 -1;范围查找并显示分数:zrange key 0 -1 withscores;
  • 按照排名倒序:zrevrange
  • 按照排名范围删除:zremrangebyrank
  • 按照分数范围删除:zremrangebyscore
(六)Redis的Keys的通用操作
  • keys * —查看所有keys
  • keys my? —查看my开头的keys
  • del key1 —删除key
  • exists key1 —key是否存在
  • rename key1 key2 — 重命名
  • expire key 1000 — 设置过期时间(/秒)
  • ttl key — 所剩的超时时间(/秒)
  • type key —key的类型

(七)Redis的事务及持久化

  • **多数据库**
  • select db1—选择数据库,标记从0开始,最大到15
  • move key1 db1—把key1移动db1数据库
  • **支持事务**
  • multi—开始事务(相当于关系型数据库的start)
  • exec—执行事务(相当于关系型数据库的commit)
  • discard—回滚事务(相当于关系型数据库的rollback)

Redis持久化使用的方式有4种:(1)RDB持久化;(2)AOF持久化;(3)同时使用RDB和AOF;(4)无持久化

RDB

RDB方式的持久化是通过快照(SnapShot)完成的,当符合一定条件时redis会自动将内存中的所有数据执行快照操作并存储到硬盘上。默认存储在redis根目录的dump.rdb文件中。(文件名在配置文件中dbfilename)

  • redis进行快照的时机(在配置文件redis.conf中)
  • save 900 1—表示900秒内至少1个键被更改则进行持久化1次(快照)。
  • save 300 10—表示300秒内至少10个键被更改则进行快照。
  • save 60 10000—表示600秒内至少10000个键被更改则进行快照。

优势:(1)方便文件备份;(2)方便灾难恢复;(3)性能最大化。fork分叉的方式,子进程完成数据持久化操作。
劣势:(1)可用性差;(2)系统可能延迟。

AOF
AOF方式的持久化是通过日志文件的方式。默认情况下redis没有开启aof,可以通过参数appendonly参数开启。

AOF优势:(1)数据安全性高;(2)即使出现宕机现象,也不会丢失已有数据;(3)自动启动重写机制。(4)日志格式清晰,易于理解;
劣势:(1)数据容量大;(2)效率低。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值