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. VS2008生成DLL并使用

    1.创建工程 2.在工程中添加类,创建.h和.cpp文件 //.h代码 /** 请注意此代码方法声明中的 __declspec(dllexport) 修饰符. 这些修饰符使 DLL 能够导出该方法以供 ...

  2. css英文字符或者数字不换行的问题

    table-layout:fixed; word-break: break-all; overflow:hidden;

  3. Windows下caffe的python接口配置

    主要是因为,发现很多代码是用python编写的,在这里使用的python安装包是anaconda2. 对应下载地址为: https://www.continuum.io/downloads/ 安装py ...

  4. nova创建虚拟机源码分析系列之六 api入口create方法

    openstack 版本:Newton 注:博文图片采用了很多大牛博客图片,仅作为总结学习,非商用.该图全面的说明了nova创建虚机的过程,从逻辑的角度清晰的描述了前端请求创建虚拟机之后发生的一系列反 ...

  5. 关于缓存问题:js清除缓存

    css并行加载,js串行加载(会阻塞页面) 清除缓存的问题: 1.一般手动清除,浏览器缓存 2.js代码清除缓存(原理:增加了一个参数,且该参数是一个随机数,每次都不一样,所以每次的请求参数都不一样, ...

  6. Windows 配置 allure report 环境

    1:配置Java环境(运行allure 需要) 2:安装powershell 3:安装scoop方法 :运行 powershell 输入 : iex (new-object net.webclient ...

  7. Sqlserver将数据从一个表插入到另一个表

    .如果是整个表复制表达如下: insert into table1 select * from table2 .如果是有选择性的复制数据表达如下: insert into table1(column1 ...

  8. [深度学习]实现一个博弈型的AI,从五子棋开始(2)

    嗯,今天接着来搞五子棋,从五子棋开始给小伙伴们聊AI. 昨天晚上我们已经实现了一个五子棋的逻辑部分,其实讲道理,有个规则在,可以开始搞AI了,但是考虑到不够直观,我们还是顺带先把五子棋的UI也先搞出来 ...

  9. 使用Dropwizard(2)-配置分类ConfiguredBundle

    前言 不可避免的要用dropwizard作为service框架.持续学习.上次在dropwizard中使用feign,使用hystrix, 算是基本入门了.接下来就是基于此的优化. 把需要使用Conf ...

  10. SpringBoot之彩色输出

    spring.output.ansi.enabled NEVER:禁用ANSI-colored输出(默认项) DETECT:会检查终端是否支持ANSI,是的话就采用彩色输出(推荐项) ALWAYS:总 ...