NoSql&Redis

1 什么是NoSql

NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,它泛指非关系型的数据库
关系型数据库:以关系(由行和列组成的二维表)模型为核心数据库. 有表的储存系统RDBMS: mysql,oracle,SQLserver等

1.1 NoSql分类

在这里插入图片描述

2 Redis

2.1 Redis的认识

Redis 是一个高性能的 开源的、C语言写的Nosql(非关系型数据库),数据保存可以存储在内存中或者磁盘中

2.2 Redis特点(优势)

  1. 数据存储:存放在内存,还支持持久化.-存取速度快,并发能力强,数据安全性高
  2. 支持value类型
  3. 支持多个语言客户端
  4. 还支持集群(支持高并发,海量数据)
  5. 主要使用它来做缓存

2.3 redis和memcache之间区别–面试题

在这里插入图片描述

2.4 redis的使用场景–面试题

  1. 做缓存
  2. 计数器应用(注册人数 浏览人数 比如 微博 评论 转发)
  3. 实时攻防系统
    ①防止攻击 – 设计 一个人 如果访问10次,就将账户锁定
  4. 设定有效期的应用(设定一个数据,到一定的时间失效。 自动解锁,购物券)
  5. 自动去重应用(只需要不断地将数据往 set 中扔就行了,set 意为 集合,所以会自动排重)
  6. 实现队列 (quene FIFO) – redis 也有结构支持
  7. 支持订阅发布(比如QQ群消息)

2.5 Redis使用

2.5.1 下载安装
  1. Redis 的官方下载站是 http://redis.io/download,可以去上面下载最新的安装程序下来

http://redis.cn/
在这里插入图片描述

  1. 启动redis服务(带配置文件启动,和不带配置文件启动)
    在这里插入图片描述

  2. 连接到redis进行操作
    cmd>{%redis%}/redis-cli -h ip地址 -p 端口号
    ip 默认为本地 -p 默认6379
    cmd>{%redis%}/redis-cli

2.5.2 redis使用
  1. 对字符串操作
    语法
    set key value
    get key
    在这里插入图片描述

  2. keys的操作
    keys * 获取所有key列表
    del key 删除key
    expire key xx 设置key的过期时间(xx秒后过期)
    ttl key 查看key的过期时间
    flushall 清空整个redis服务器数据,所有的数据库全部清空
    flushdb 清除当前库,redis中默认有16个数据库,名称分别为0,1,2.。。15
    select index select 0
    在这里插入图片描述

  3. 操作list
    list集合可以看成是一个左右排列的队列(列表)
    lpush key value 将一个或多个值 value 插入到列表 key 的表头(最左边)
    rpush key value 将一个或多个值 value 插入到列表 key 的表尾(最右边)

lpop key 移除并返回列表 key 的头(最左边)元素。
rpop key 移除并返回列表 key 的尾(最右边)元素。

lrange key start stop 返回列表 key 中指定区间内的元素,查询所有的stop为-1即可
lrem key count value

lindex key index 返回列表 key 中,下标为 index 的元素
ltrim key start stop 对一个列表进行修剪

存放都是字符串,由redis组织成各种数据结构

list控制同一边进,同一边出就是栈
list控制一边进,另一边出就是队列.

  1. 操作set
    set集合是一个无序的不含重复值的队列
    sadd key member 将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略
    srem key member 移除集合 key 中的一个或多个 member 元素,不存在的 member 元素会被忽略
    smembers key 返回集合 key 中的所有成员

  2. 操作hash
    hash类型类似于php的数组
    hset key name value 添加一个name=>value键值对到key这个hash类型
    hget key name 获取hash类型的name键对应的值
    hmset key name1 key1 name2 key2 批量添加name=>value键值对到key这个hash类型
    hmget key name1 name2 批量获取hash类型的键对应的值
    hkeys 返回哈希表 key 中的所有键
    hvals 返回哈希表 key 中的所有值
    hgetall 返回哈希表 key 中,所有的键和值

  3. 设置密码
    CONFIG SET命令可以动态地调整 Redis 服务器的配置而无须重启,重启后失效
    CONFIG SET requirepass 123456 将密码设置为123456
    CONFIG SET requirepass "" 清除密码
    AUTH 123456 输入密码进行认证

3 Java代码操作redis

3.1 导入jar包

在这里插入图片描述

3.2 Jedis简单操作

@Test
public void testName()throws Exception{
    //链接redis服务端
    Jedis jedis = new Jedis("127.0.0.1", 6379, 1000);
    //设置密码
    jedis.auth("123456");
    jedis.set("name", "皮皮虾");
    System.out.println(jedis.get("name"));
    jedis.close();
}

3.3 连接池配置 and Jedis数据结构操作

在这里插入图片描述

/**
 * 连接池操作
 */
@Test
public void testRedisPool()throws Exception{
    //创建连接池配置对象
    JedisPoolConfig config = new JedisPoolConfig();
    config.setMaxIdle(2);//设置最大空闲连接数
    config.setMaxTotal(10);//设置最大总的连接数
    config.setMaxWaitMillis(1000*1);//最大的等待时间
    //创建连接池对象
    JedisPool pool = new JedisPool(config,"127.0.0.1",6379,1000*1,"123456");
    //得到jedis对象  就可以操作
    System.out.println("------------------String操作-------------------------");
    Jedis jedis = pool.getResource();
    //新增
    jedis.set("test1", "皮皮虾");
    System.out.println(jedis.get("test1"));
    //修改
    jedis.set("test1", "皮皮怪");
    //删除
    jedis.del("test1");
    System.out.println(jedis.keys("*"));

    System.out.println("------------------list操作-------------------------");
    jedis.lpush("students", "1","2","3","4","5","6");
    List<String> student1 = jedis.lrange("students", 0, -1);
    for (String s : student1) {
        System.out.println(s);
    }

    System.out.println("------------------Set操作-------------------------");
    jedis.sadd("studentsSet", "皮皮虾","皮皮怪","皮皮虫","猪儿虫");
    System.out.println(jedis.smembers("studentsSet"));

    System.out.println("------------------Hash操作-------------------------");
    jedis.hset("studentsHash", "student", "猪猪侠");
    System.out.println(jedis.hget("studentsHash", "student"));
    jedis.close();
}

3.4 持久化方式

==rdb方式 ==
默认开启该配置 redis.windows.conf配置
save (sec) (key change) 在sec秒之后,如果发现有key改变次数达到配置,就会进行同步
缺点:数据它有丢失 ,它是有时间节点,在这个节点内突然断点,就不能同步到磁盘

aof方式
默认没有开启配置 需要redis.windows.conf里面进行配置
appendonly yes
到时候 如果有写的命令操作,就会把数据同步到 …aof文件里面 如果断电之后,再次启动,加载该文件,执行命令,在数据写到库里面
这两种可以结合使用 推荐使用aof方式

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值