1、什么是NoSQL
    NoSQL   =   Not Only  SQL
    非关系型的数据库
    
2、 为什么需要NoSQL
    High performance  高并发读写
    Huge Storage      海量数据的高效率存储和访问
    High Scalability && High Availability   高可扩展性和高可用性
    
3、NoSQL数据库的四大分类
    键值(Key-Value)存储
    列存储
    文档数据库
    图形数据库
    
4、NoSQL的特点
    易扩展
    灵活的数据模型
    大数据量,高性能
    高可用
    
5、Redis高性能键值对数据库,支持的键值数据类型
    字符串类型
    列表类型
    有序集和类型
    散列类型
    集合类型
    
6、Redis的应用场景
    缓存
    任务队列
    网站访问统计
    应用排行榜
    数据过期处理
    分布式集群架构中的session分离
    
7、redis基本操作
    进入redis:redis-cli
    存储:set name value
    取值: get name
    查看所有的键:keys *
    删除键值对:del name
    
8、Jedis入门
    Jedis是Redis官方首选的Java客户端开发包
    http://github.com/xetorthio/jedis
    
9、java使用Jedis
 package com.jedis.test;

 import redis.clients.jedis.Jedis;

 /**
* Created by Administrator on 2017-07-13.
*/
public class JedisDemo1 {
/**
* 单实例测试
*/
public static void main(String[] args) {
//设置IP地址和端口
Jedis jedis=new Jedis("192.168.21.195",6379);
//保存数据
jedis.set("name","lu");
//获取数据
String value=jedis.get("name");
System.out.println("name对应的:"+value);
//释放资源
jedis.close();
}
}

jedis单实例测试

 package com.jedis.test;

 import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig; import java.util.Date; /**
*连接池的方式连接
*/
public class JedisDemo2 {
public static void main(String[] args) {
//获取连接池的配置
JedisPoolConfig config = new JedisPoolConfig();
//设置最大连接数
config.setMaxTotal(30);
//设置最大空闲连接数
config.setMaxIdle(10);
//获得连接池
JedisPool jedisPool=new JedisPool(config,"192.168.21.195",6379);
//获得核心对象
Jedis jedis=null;
try {
//通过连接池获得连接
jedis=jedisPool.getResource();
//设置数据
jedis.set("name","张三");
//获取数据
String value = jedis.get("name");
System.out.println("name对应的value:"+value);
}catch (Exception e){
e.printStackTrace();
}finally {
if (jedis!=null){
jedis.close();
}
if (jedisPool!=null){
jedisPool.close();
}
}
} }

jedis连接池方式连接

10、Redis5种数据类型
    字符串(String)
    字符串列表(list)
    有序字符串集合(sorted set)
    哈希(hash)
    字符串集合(set)
    
11、key定义的注意点;
    不要过长
    不要过短
    统一的命名规范
    
12、存储String
    二进制安全的,存入和获取的数据相同
    Value最多可以容纳的数据长度是512M
 
13、存储String常用命令
    赋值
    取值
    删除
    扩展命令
    取值增减
redis 127.0.0.1:6379> set company lu
OK
redis 127.0.0.1:6379> get company
"lu"
redis 127.0.0.1:6379> getset company baidu
"lu"
redis 127.0.0.1:6379> get company
"baidu"
redis 127.0.0.1:6379> del company
(integer) 1
redis 127.0.0.1:6379> get company
(nil)
redis 127.0.0.1:6379> incr num
(integer) 1
redis 127.0.0.1:6379> get num
"1"
redis 127.0.0.1:6379> incr num
(integer) 2
redis 127.0.0.1:6379> get num
"2"
redis 127.0.0.1:6379> incr name
(error) ERR value is not an integer or out of range
redis 127.0.0.1:6379> decr num
(integer) 1
redis 127.0.0.1:6379> decr num2
(integer) -1
redis 127.0.0.1:6379> incrby num 5
(integer) 6
redis 127.0.0.1:6379> incrby num3 5
(integer) 5
redis 127.0.0.1:6379> decrby num3 2
(integer) 3
redis 127.0.0.1:6379> append num 5
(integer) 2
redis 127.0.0.1:6379> get num
"65"
redis 127.0.0.1:6379> append num4 4
(integer) 1
redis 127.0.0.1:6379> get num4
"4"

存储String常用命令

13、存储Hash
    
String Key和String Value的map容器
    每一个Hash可以存储4294967295个键值对

   储存Hash常用命令:
        赋值
        取值删除增加数字
        自学命令

 redis 127.0.0.1:6379> hset myhash username jack
(integer) 1
redis 127.0.0.1:6379> hset myhash age 18
(integer) 1
redis 127.0.0.1:6379> hmset myhash2 username rose age 21
OK
redis 127.0.0.1:6379> hget myhash username
"jack"
redis 127.0.0.1:6379> hget myhash age
"18"
redis 127.0.0.1:6379> hmget myhash username age
1) "jack"
2) "18"
redis 127.0.0.1:6379> hgetall myhash
1) "username"
2) "jack"
3) "age"
4) "18"
redis 127.0.0.1:6379> hdel myhash2 username
(integer) 1
redis 127.0.0.1:6379> hgetall myhash2
1) "age"
2) "21"
redis 127.0.0.1:6379> del myhash2
(integer) 1
redis 127.0.0.1:6379> hgetall myhash2
(empty list or set)
redis 127.0.0.1:6379> hincrby myhash age 5
(integer) 23
redis 127.0.0.1:6379> hexists myhash username
(integer) 1
redis 127.0.0.1:6379> hexists myhash password
(integer) 0
redis 127.0.0.1:6379> hlen myhash
(integer) 2
redis 127.0.0.1:6379> hkeys myhash
1) "username"
2) "age"
redis 127.0.0.1:6379> hvalues myhash
(error) ERR unknown command 'hvalues'
redis 127.0.0.1:6379> hvals myhash
1) "jack"
2) "23"

存储Hash常用命令

14、存储list
    ArrayList使用数组方式
    LinkedList使用双向链接方式
    双向链表中增加数据
    双向链表中删除数据
    
    存储list常用命令:
        两端添加
        两端弹出
        扩展命令
        查看列表
        获取列表元素个数

 redis 127.0.0.1:6379> lpush mylist a b c
(integer) 3
redis 127.0.0.1:6379> lpush mylist 1 2 3
(integer) 6
redis 127.0.0.1:6379> rpush mylist2 a b c
(integer) 3
redis 127.0.0.1:6379> rpush mylist2 1 2 3
(integer) 6
redis 127.0.0.1:6379> lrange mylist 0 5
1) "3"
2) "2"
3) "1"
4) "c"
5) "b"
6) "a"
redis 127.0.0.1:6379> lrange mylist2 0 -1
1) "a"
2) "b"
3) "c"
4) "1"
5) "2"
6) "3"
redis 127.0.0.1:6379> lrange mylist2 0 -2
1) "a"
2) "b"
3) "c"
4) "1"
5) "2"
redis 127.0.0.1:6379> lpop mylist
"3"
redis 127.0.0.1:6379> lrange mylist 0 -1
1) "2"
2) "1"
3) "c"
4) "b"
5) "a"
redis 127.0.0.1:6379> rpop mylist
"a"
redis 127.0.0.1:6379> lrange mylist2 0 -1
1) "a"
2) "b"
3) "c"
4) "1"
5) "2"
6) "3"
redis 127.0.0.1:6379> rpop mylist2
"3"
redis 127.0.0.1:6379> rpop mylist2
"2"
redis 127.0.0.1:6379> lrange mylist2 0 -1
1) "a"
2) "b"
3) "c"
4) "1"
redis 127.0.0.1:6379> llen mylist
(integer) 4
redis 127.0.0.1:6379> llen mylist2
(integer) 4
redis 127.0.0.1:6379> llen mylist3
(integer) 0
redis 127.0.0.1:6379> lpushx mylist x
(integer) 5
redis 127.0.0.1:6379> lrange mylist 0 -1
1) "x"
2) "2"
3) "1"
4) "c"
5) "b"
redis 127.0.0.1:6379> lpushx mylist3 x
(integer) 0
redis 127.0.0.1:6379> rpushx mylist2 x
(integer) 5
redis 127.0.0.1:6379> lrange mylist2
(error) ERR wrong number of arguments for 'lrange' command
redis 127.0.0.1:6379> lrange mylist2 0 -1
1) "a"
2) "b"
3) "c"
4) "1"
5) "x"
redis 127.0.0.1:6379> lpush mylist3 1 2 3
(integer) 3
redis 127.0.0.1:6379> lpush mylist3 1 2 3
(integer) 6
redis 127.0.0.1:6379> lpush mylist3 1 2 3
(integer) 9
redis 127.0.0.1:6379> lrange mylist3 0 -1
1) "3"
2) "2"
3) "1"
4) "3"
5) "2"
6) "1"
7) "3"
8) "2"
9) "1"
redis 127.0.0.1:6379> lrem mylist3 2 3
(integer) 2
redis 127.0.0.1:6379> lrange mylist3 0 -1
1) "2"
2) "1"
3) "2"
4) "1"
5) "3"
6) "2"
7) "1"
redis 127.0.0.1:6379> lrem mylist3 -2 1
(integer) 2
redis 127.0.0.1:6379> lrange mylist3 0 -1
1) "2"
2) "1"
3) "2"
4) "3"
5) "2"
redis 127.0.0.1:6379> lrem mylist3 0 2
(integer) 3
redis 127.0.0.1:6379> lrange mylist3 0 -1
1) "1"
2) "3"
redis 127.0.0.1:6379> lrange mylist 0 -1
1) "x"
2) "2"
3) "1"
4) "c"
5) "b"
redis 127.0.0.1:6379> lset mylist 3 mmm
OK
redis 127.0.0.1:6379> lrange mylist 0 -1
1) "x"
2) "2"
3) "1"
4) "mmm"
5) "b"
redis 127.0.0.1:6379> lpush mylist4 a b c
(integer) 3
redis 127.0.0.1:6379> lpush mylist4 a b c
(integer) 6
redis 127.0.0.1:6379> lrange mylist4 0 -1
1) "c"
2) "b"
3) "a"
4) "c"
5) "b"
6) "a"
redis 127.0.0.1:6379> linsert mylist4 before b 11
(integer) 7
redis 127.0.0.1:6379> lrange mylist4 0 -1
1) "c"
2) "11"
3) "b"
4) "a"
5) "c"
6) "b"
7) "a"
redis 127.0.0.1:6379> linsert mylist4 after b 22
(integer) 8
redis 127.0.0.1:6379> lrange mylist4 0 -1
1) "c"
2) "11"
3) "b"
4) "22"
5) "a"
6) "c"
7) "b"
8) "a"
redis 127.0.0.1:6379> lpush mylist5 1 2 3
(integer) 3
redis 127.0.0.1:6379> lpush mylist6 a b c
(integer) 3
redis 127.0.0.1:6379> rpoplpush mylist5 mylist6
"1"
redis 127.0.0.1:6379> lrange mylist5 0 -1
1) "3"
2) "2"
redis 127.0.0.1:6379> lrange mylist6 0 -1
1) "1"
2) "c"
3) "b"
4) "a"

存储list常用命令

15、存储Set
    和List类型不同的是,Set集合中不允许出现重复的元素
        
    存储set常用命令:
        添加/删除元素
        获得集合中的元素
        集合中的差集运算
        集合中的交集运算
        集合中的并集运算
        扩展命令

 redis 127.0.0.1:6379> sadd myset a b c
(integer) 3
redis 127.0.0.1:6379> sadd myset a
(integer) 0
redis 127.0.0.1:6379> sadd myset 1 2 3
(integer) 3
redis 127.0.0.1:6379> srem myset 1 2
(integer) 2
redis 127.0.0.1:6379> smembers myset
1) "3"
2) "c"
3) "a"
4) "b"
redis 127.0.0.1:6379> sismember myset a
(integer) 1
redis 127.0.0.1:6379> sismember myset 6
(integer) 0
redis 127.0.0.1:6379> saaa mya1 a b c
(error) ERR unknown command 'saaa'
redis 127.0.0.1:6379> sadd mya1 a b c
(integer) 3
redis 127.0.0.1:6379> sadd mya2 a c 1 2
(integer) 4
redis 127.0.0.1:6379> sdiff mya1 mya2
1) "b"
redis 127.0.0.1:6379> sinter mya1 mya2
1) "c"
2) "a"
redis 127.0.0.1:6379> sunion mya1 mya2
1) "1"
2) "a"
3) "b"
4) "c"
5) "2"
redis 127.0.0.1:6379> smembers myset
1) "3"
2) "c"
3) "a"
4) "b"
redis 127.0.0.1:6379> scard myset
(integer) 4
redis 127.0.0.1:6379> srandmember myset
"a"
redis 127.0.0.1:6379> srandmember myset
"a"
redis 127.0.0.1:6379> srandmember myset
"3"
redis 127.0.0.1:6379> sdiffstore my1 mya1 mya2
(integer) 1
redis 127.0.0.1:6379> smembers my1
1) "b"
redis 127.0.0.1:6379> sinterstore my2 mya1 mya2
(integer) 2
redis 127.0.0.1:6379> smembers my2
1) "c"
2) "a"
redis 127.0.0.1:6379> sunionstore my3 mya1 mya2
(integer) 5
redis 127.0.0.1:6379> smembers my3
1) "1"
2) "a"
3) "b"
4) "c"
5) "2"

储存Set常用命令

存储Set使用场景
        跟踪一些唯一性数据
        用于维护数据对象之间的关联关系

16、存储Sorted-Set
    Sorted-Set中的成员在集合中的位置是有序的
    
    存储Sorted-Set常用命令:
        添加元素
        删除元素
        获得元素
        范围查询
        扩展命令

 redis 127.0.0.1:6379> zadd mysort 70 zs 80 ls 90 ww
(integer) 3
redis 127.0.0.1:6379> zadd mysort zs
(error) ERR wrong number of arguments for 'zadd' command
redis 127.0.0.1:6379> zadd mysort 100 zs
(integer) 0
redis 127.0.0.1:6379> zadd mysort 60 tom
(integer) 1
redis 127.0.0.1:6379> zscore mysort zs
"100"
redis 127.0.0.1:6379> zcard mysort
(integer) 4
redis 127.0.0.1:6379> zrem mysort tom ww
(integer) 2
redis 127.0.0.1:6379> zcard mysort
(integer) 2
redis 127.0.0.1:6379> zadd mysort 85 jack 95 rose
(integer) 2
redis 127.0.0.1:6379> zrange mysort 0 -1
1) "ls"
2) "jack"
3) "rose"
4) "zs"
redis 127.0.0.1:6379> zrange mysort 0 -1 withscores
1) "ls"
2) "80"
3) "jack"
4) "85"
5) "rose"
6) "95"
7) "zs"
8) "100"
redis 127.0.0.1:6379> zrevrange mysort 0 -1 withscores
1) "zs"
2) "100"
3) "rose"
4) "95"
5) "jack"
6) "85"
7) "ls"
8) "80"
redis 127.0.0.1:6379> zremrangebyrank mysort 0 4
(integer) 4
redis 127.0.0.1:6379> zrevrange mysort 0 -1 withscores
(empty list or set)
redis 127.0.0.1:6379> zadd mysort 80 zs 90 ls 100 ww
(integer) 3
redis 127.0.0.1:6379> zremrangebyscore mysort 80 100
(integer) 3
redis 127.0.0.1:6379> zrevrange mysort 0 -1 withscores
(empty list or set)
redis 127.0.0.1:6379> zadd mysort 70 zs 80 ls 90 ww
(integer) 3
redis 127.0.0.1:6379> zrangebyscore mysort 0 100
1) "zs"
2) "ls"
3) "ww"
redis 127.0.0.1:6379> zrangebyscore mysort 0 100 withscore
(error) ERR syntax error
redis 127.0.0.1:6379> zrangebyscore mysort 0 100 withscores
1) "zs"
2) "70"
3) "ls"
4) "80"
5) "ww"
6) "90"
redis 127.0.0.1:6379> byscore mysort 0 100 withscores limit 0 2
1) "zs"
2) "70"
3) "ls"
4) "80"
redis 127.0.0.1:6379> zincrby mysort 3 ls
"83"
redis 127.0.0.1:6379> zscore mysort ls
"83"
redis 127.0.0.1:6379> zcount mysort 80 90
(integer) 2

Sorted-Set常用命令

Sorted-Set使用场景
        大型在线游戏积分排行榜
        构建索引数据

17、Redis特性
    切换数据库
        select 0
    移动key到某一个数据库
        move key 1
    开启事务
        multi
    提交事务
        exec
    回滚事务
        discard

18、Redis持久化
    持久化方式:
        RDB方式(配置以多少秒将数据储存到硬盘)
        AOF方式(读取日志文件)
        无持久化(缓存方式)
        同时使用RDB和AOF

Redis的简单使用和介绍的更多相关文章

  1. Redis主从复制简单介绍

    由于本地环境的使用,所以搭建一个本地的Redis集群,本篇讲解Redis主从复制集群的搭建,使用的平台是Windows,搭建的思路和Linux上基本一致! (精读阅读本篇可能花费您15分钟,略读需5分 ...

  2. redis 的简单命令

    以下实例讲解了如何启动 redis 客户端: 启动 redis 客户端,打开终端并输入命令 redis-cli.该命令会连接本地的 redis 服务. $redis-cli redis > re ...

  3. python内置函数的简单使用和介绍

    """内置函数的简单使用和介绍参考链接:https://docs.python.org/3/library/functions.html ""&quo ...

  4. Redis的简单了解以及主从复制

    1.Redis的简单了解 Redis是一种高性能的分布式NoSql数据库,持久存储,高并发,数据类型丰富,通过现场申请内存空间,同时可以配置虚拟内存.五种数据类型:string(字符串,这种格式和me ...

  5. Redis 的简单运算

    Redis 的简单运算 命令 说明 备注 incr key 在原字段上加 1 只能对整数操作 incrby key increment 在原字段上加上整数 (increment) 只能对整数操作 de ...

  6. 5.如何保证 redis 的高并发和高可用?redis 的主从复制原理能介绍一下么?redis 的哨兵原理能介绍一下么?

    作者:中华石杉 面试题 如何保证 redis 的高并发和高可用?redis 的主从复制原理能介绍一下么?redis 的哨兵原理能介绍一下么? 面试官心理分析 其实问这个问题,主要是考考你,redis ...

  7. python redis 实现简单的消息订阅

    python + redis 实现简单的消息订阅 订阅端 import redis from functools import wraps class Subscribe: def __init__( ...

  8. redis事务及相关命令介绍

    redis事务及相关命令介绍 一.概述:和众多其它数据库一样,Redis作为NoSQL数据库也同样提供了事务机制.在Redis中,MULTI/EXEC/DISCARD/WATCH这四个命令是我们实现事 ...

  9. Redis的简单介绍及在Windows下环境搭建

    简单介绍 1,Redis是什么 最直接的还是看官方的定义吧. Redis is an open source (BSD licensed), in-memory data structure stor ...

随机推荐

  1. 使用(Unicode字符)让inline水平元素换行

      为了实现上面效果: <dl>     <dt>提问:</dt><dd>为什么没有男朋友?</dd> </dl> <dl ...

  2. Python爬虫入门:综述

    大家好哈,最近博主在学习Python,学习期间也遇到一些问题,获得了一些经验,在此将自己的学习系统地整理下来,如果大家有兴趣学习爬虫的话,可以将这些文章作为参考,也欢迎大家一共分享学习经验. Pyth ...

  3. 如何让只支持IE浏览器的jsp转为可以支持chrome

    如果你的项目只能使用IE浏览器打开,你想让其支持chrome的话,可以试一下下面的代码哦: function showLayerDialog(url,paramFuction){ top.layer. ...

  4. ASP.NET没有魔法——ASP.NET Identity与授权

    一个完整的ASP.NET的请求中会存在身份验证(Authentication)阶段以及授权(Authorization)阶段,英文单词Authentication和Authorization非常相似, ...

  5. C# 4.0 新特性dynamic、可选参数、命名参数等

    1.dynamic ExpandoObject熟悉js的朋友都知道js可以这么写 :   1 var t = new Object(); 2 t.Abc = ‘something’; 3 t.Valu ...

  6. JDBC之代码优化

    上一次我们是先实现了JDBC对数据库的增删查改操作,然后在增加新信息过程中发现了新的问题,即当某一操作失败,为了维护数据库的一致性,我们需要回滚事务.在其中我们了解了事务的工作原理及相关代码的使用. ...

  7. [转载] ZooKeeper的Java客户端API

    转载自 http://www.cnblogs.com/ggjucheng/p/3370359.html http://zookeeper.apache.org/doc/trunk/javaExampl ...

  8. C语 三子棋小游戏

    #include <stdio.h> #include <Windows.h> #include<time.h> #define row 3 #define lis ...

  9. API设计相关

    来自HeroKu的HTTP API 设计指南 http://get.jobdeer.com/343.get https://github.com/interagent/http-api-design ...

  10. 【玩转树莓派】使用 sinopia 搭建私有 npm 服务器

    简介 使用 sinopia 的好处是,node系的工程师,内部协作时,使用自有 npm 包,会非常方便:另外,sinopia,会缓存已经下载过的包,可以在相当程度上,加速 npm install 相关 ...