Redis

Redis:非关系型数据库

关系型数据库和非关系型数据库的区别
Hbase,数据 是非关系型
业务数据,数仓 是关系型
非关系没有数据结构,数据没有约束

简介

Redis是一个开源的 内存中的数据结构存储系统
作用: 数据库 缓存 消息中间件
支持多种数据结构

什么是Nosql,有哪些Nosql
Redis的特点

过期时间可以设置到毫秒
访问快
持久化机制
集群模式
支持丰富数据类型

Redis用来做 实时 存储的比较多

安装

1 下载安装包

官网地址:https://redis.io/

下载地址:http://download.redis.io/releases/redis-4.0.14.tar.gz

2 安装c语言环境

因为:Redic是基于C语言开发出来的又要安装在linux系统下

yum install gcc-c++
3 将redis的源码包上传到linux系统并解压
tar -zxvf redis-4.0.14.tar.gz -C /usr/local/
4 进入Redis 包,执行make命令编译源码
make
5 安装
make install PREFIX=/usr/local/redis
linux命令

c 集群
–raw 在可显示中文
–csv 查看csv格式的文件
–a 设密码

/password vi里查找命令

idea项目套项目pox可以继承

APi

集群链接
new jedisPool(“qianfeng01”,6379)创建连接池
jedisPool。getResource

Redis 启动和关闭等基础命令

前端启动:./redis-server
关闭:ctrl + c
后端启动 :cp redis.conf /usr/local/redis/bin
修改redis.conf
daemonize yes 即后端启动
password 设置
默认客户端设置为本节点

启动redis 服务:./redis-server redis.conf
关闭:./redis-cli shutdown
查看进程:ps -ef | grep red
强制关闭:kill xxx

API

Hash 散列
List 列表
Set 集合
Zset 有序结合
String 字符串
添加
jedis。set

RedisAPI类型操作练习
/*
#### RedisAPI类型操作练习
Hash 散列
List 队列
set 集合
Zset 有序结合
String 字符串
 */
object RedisAPI类型操作练习 {
  def main(args: Array[String]): Unit = {
    //实例连接对象
    val jedis = new Jedis("qianfeng01", 6379)
    //密码认证
    jedis.auth("123456")
    //清空数据库
    //jedis.flushDB()
    /*
    字符串String练习
    增删改查
     */
    //添加
   // println(jedis.set("陈冠希", "张柏芝"))//放回ok

    //追加 如果key不存在创建新的key
    //println(jedis.append("陈冠希", "谢霆锋"))//返回value长度

    //获取
   //println(jedis.get("陈冠希"))

     //自增自减
    //println(jedis.incr("count"))  //元素加一
   // println(jedis.incrBy("count", 10)) //元素加10
   // println(jedis.incrByFloat("avg", 10.8)) //元素加浮点数
   // println(jedis.decr("count")) //元素减一
 // println(jedis.decrBy("count", 5)) //元素减5

    //查询字符串长度范围 类似截取
    //println(jedis.getrange("陈冠希", 0, 1))

    //替换  返回的是修改的字符数的long类型,且修改类型无限制
    //println(jedis.setrange("count", 0, "123456"))
    //println(jedis.get("count"))

    //获取长度 也是long类型
    //println(jedis.strlen("count"))

    //设置多个key  返回ok
    //println(jedis.mset("age", "20", "name", "张三"))
    //获取多个key 返回List[String]
   // println(jedis.mget("age", "name"))

    //先获取再设置,修改value,并返回之前的value
   // println(jedis.getSet("count", "邪门白虎"))
    /*
    集合操作set
     */
    //添加元素
    //jedis.sadd("hobbys","玩","睡觉","旅游","打游戏","吃")

    //查询 集合元素个数
    //println(jedis.scard("hobbys"))

    //交集差集 sinter sdiff
    //获取集合元素
   // println(jedis.smembers("hobbys"))

    //随机获取N个元素集合
    //println(jedis.srandmember("hobbys", 3))

    //删除
    //jedis.srem("hobbys","睡觉")

    //迭代元素
   // val scan = new ScanParams()
  //  scan.`match`("打*")
   // val rs = jedis.sscan("hobbys", "0", scan)
  //  println(rs.getResult)

    /*
    有序集合操作
    排序规则:根据score排序,值越大,排名越靠后
     */
    //添加
 //   jedis.zadd("price",1,"1")
 //   jedis.zadd("price",5,"10")
 //   jedis.zadd("price",2,"1.8")
 //   jedis.zadd("price",6,"100")
 //   jedis.zadd("price",10,"99")
 //   jedis.zadd("price",8,"五百")

    //获取元素
 // println(jedis.zrange("price", 0, -1))

    //获取指定分值范围内元素数据,score的范围内的元素个数
   // println(jedis.zcount("price", 1, 4))

    //新增(插入)
    //jedis.zincrby("price",6.8,"6")

    //排名(确定当前值在排名中的索引)
   // println(jedis.zrank("price", "100"))

    //删除
    //jedis.zrem("price","五百")

    //获取score的value
   // println(jedis.zscore("price", "100"))

    /**
     * List 队列
     */
    //添加
  //  jedis.lpush("users","ww","ss","oo","tt")
  //  //jedis.rpush
  //  //h获取长度
  //  println(jedis.llen("users"))
  //
  //  //获取元素
  //  println(jedis.lrange("users", 0, -1))
//
  //  //删除
  //  jedis.lrem("user",1,"zz")
//
  //  //往头部插入一个元素,但是注意Key一定要存在
  //  jedis.lpushx("users","zz")
  //  jedis.rpushx("users","mm")
//
  //  //修改
  //  jedis.lset("users",0,"jj")
//
  //  //获取指定元素
  //  println(jedis.lindex("users", 0))

   // println(jedis.lrange("users", 0, -1))

    /**
    hash 散列
     */
    //添加
  jedis.hset("user","name","zhangsan")
    jedis.hset("user","age","18")
    //h获取key的值
    println(jedis.hget("user", "name"))
    //获取所有值
    println(jedis.hexists("user", "age"))
    //判断
    println(jedis.hexists("user", "age"))
    //获取长度
    jedis.hlen("user")
    //追加数据
    jedis.hincrBy("user","age",10)
    //删除
    println(jedis.hdel("user", "name"))
    //获取所有value的值
    println(jedis.hvals("user"))

    //关闭释放资源
    jedis.close()

  }

}

单机连接
public class 单机连接Redis {
    public static void main(String[] args) {
        Jedis jedis = new Jedis("qianfeng01", 6379);
        jedis.auth("123456");
        String set = jedis.set("s1", "hahaha");
        System.out.println(set);

        String get = jedis.get("s1");
        System.out.println(get);

        String ping = jedis.ping();
        System.out.println(ping);
        jedis.close();
    }
}

连接池连接
object 连接池 {
  def main(args: Array[String]): Unit = {
    //配置连接池的参数
    val config = new GenericObjectPoolConfig
    config.setMaxTotal(10)//最大连接数
    config.setMaxIdle(5) //最大空闲连接
    config.setMinIdle(0) //最小空闲连接
    //创建连接池
    val pool = new JedisPool(config,
      "qianfeng01", //redis的节点
      6379, //redis的端口
      10000, //连接超时时间
      "123456", //redis的密码
      0)
    //创建Jedis实例
    val jedis = pool.getResource
    //测试
    jedis.auth("123456")
    jedis.set("吴奇隆","刘诗诗")
    println(jedis.get("吴奇隆"))
    println(jedis.ping())
    //关闭连接池
    jedis.close()
  }

}

连接池连接java版
public class 连接池连接Redis {
    public static void main(String[] args) {
        //配置连接参数
        //创建连接池
        JedisPool pool = new JedisPool("node02", 6379);
        //通过pool获取Jedis实力
        Jedis jedis = pool.getResource();

        //写入数据
        jedis.set("s2","hehehe");
        //查询数据
        String s2 = jedis.get("s2");

        //关闭jedis
        jedis.close();
        //关闭jedispool
        pool.close();
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值