redis

  1. 概念: redis是一款高性能的NOSQL系列的非关系型数据库

  2. 安装:
    官网地址:https://redis.io/
    中文官网地址:https://www.redis.net.cn/
    解压直接可以使用︰
    redis.windows.conf:配置文件
    redis-cli.exe:redis的客户端
    redis-server.exe:redis服务器端

    有些电脑会出现问题
    1启动服务器端闪退,启动客户端:
    [问题:Could not connect to Redis at 127.0.0.1:6379:由于目标计算机积极拒绝,无法连接]
    解决:在redis根目录下打开命令行窗口,输入命令redis-server.exe redis.windows.conf后,不要关闭本窗口。
    [问题:redis-server.exe闪退问题报错QForkMasterInit: system error caught. error code=0x000005af, message=Virtual]
    解决:说明你没有设置redis的最大内存,用记事本打开redis.windows.conf最后一行加上下方代码即可。
    maxmemory 268435456
    maxheap 314572800

  3. Redis添加至windows服务:
    安装服务:redis-server --service-install redis.windows.conf --loglevel verbose
    其中参数 --loglevel verbose表示记录日志等级
    卸载服务:redis-server --service-uninstall

  4. 设置密码:
    打开redis.windows.conf文件,找到“requirepass”配置项,此处设置redis密码,如果不需要密码,可以将该配置项注释掉。配置完成后,保存文件。

  5. 命今操作:

    • redis的数据结构∶
      redis存储的是:key,value格式的数据,其中key都是字符串
      value有5种不同的数据结构:
      变量名|真实类型|作用
      :-:|:-:|:-:
value类型 对应命令 数据格式
字符串类型 string 存储:set key value
获取∶get key
删除: del key
张三
哈希类型 hash 存储: hset key field value
获取: hget key field
获取所有的field和value:hget all key
删除:hdel key field
列表类型 list 左添加先加a,后加b,b在a的左边,
右添加c,c在列表 的最右边
1.将元素加入列表左表:lpush key value
2.将元素加入列表右边:rpush key value

范围获取:lrange key start end

删除并返回最左边的元素:lpop key
删除并返回最右边的元素:rpop key
可重复
集合类型 set 存储: sadd key value
获取set集合中所有元素:smembers key
删除set集合中的某个元素:srem key value
不可重复,没有顺序
有序集合类型
sorted set
存储:zadd key score value
获取:zrange key start end
删除∶zren key value
不可重复,通过 score 可排序

通用命今:
keys *:查询所有的键
type key:获取键对应的value的类型
del key:删除指定的key value

  1. 持久化
    • redis是一个内存数据库,当redis服务器重后,或重启电脑,数据会丢失,我们可以将redis内存中的数据持久化保存到硬盘的文件中。

    • redis持久化机制:
      1. RDB:默认方式,不需要进行配置,默认就使用这种机制
      在一定的间隔时间中,检测key的变化情况,然后持久化数据

      步骤:可改变此配置文件的值:
      1,编辑redis.windwos.conf文件
      900秒【15分钟】内有1次数据改变持久化数据
      save 900 1
      300秒【5分钟】内有10次数据改变持久化数据
      save 300 10
      60秒【1分钟】内有10000次数据改变持久化数据
      save 60 10000
      2,重新启动redis服务器,并指定配置文件名称
      D:\Javaweb2018\day23_redis\资料\redis\windows-64 (redis-2.8.9>redis- server.exe redis.windows.conf

      1. AOF:日志记录的方式,可以记录每一条命今的操作。可以每一次命分操作后,持久化数据

      1,编辑redis.windwos.conf文件
      appendonly no (关闭aof)--> appendonly yes(开启aof)
      appendfsync always 每一次操作都进行持久化
      appendfsync everysec 每隔一秒进行一次持久化
      appendfsync nb 不进行持久化
      2,重新启动redis服务器,并指定配置文件名称
      D:\Javaweb2018\day23_redis\资料\redis\windows-64 (redis-2.8.9>redis-
      server.exe redis.windows.conf

Java客户端Jedis
  1. jedis:一款java操作redis数据库的工具.
  2. 使用步骤:
    1.下载jedis的jar包
    2.使用
public class JedisTest {
    /**
     * 快速入门
     */
    @Test
    public void test01(){
        //1创建连接对象
        Jedis jedis = new Jedis("localhost",6379);
        //2操作
        jedis.set("username","zhangsan");
        //3关闭连接
        jedis.close();
    }
}
  1. jedis操作redis各种数据类型
    • string
    //1.获取连接
    Jedis jedis = new Jedis();//如果使用空参构造,默认值"localhost",6379端口
    //2.操作
    //存储
    jedis.set( "username" , "zhangsan");//获取
    String username = jedis.get( "username" );
    system.out.println(username) ;
    //可以使用setex()方法存储可以指定过期时间的key value
    jedis.setex( "activecode" , 20,"hehe");//将activecode: hehe键值对存入redis,并且zo秒后自动删除该键值对
    
    
    • hash
    //2.操作//存储hash
    jedis.hset( "user" , "name" , "lisi");
    jedis.hset( "user" , "age" , "23");
    jedis.hset( "user" , "gender" , "male");
    //获取hash
    String name = jedis.hget( "user",f"name " );
    system.out.println(name) ;
    //获取hash的所有map中的数据
    Map<String,String> user = jedis.hgetAll( "user" ); // keyset
    Set<String> keySet = user.keySet( );
    for (string key : keySet) {
        //获取value
        String value = user.get( key ) ;
        system. out- println(key “:" +.value) ;
    }
    
    • list
    //2.操作l/ list存储
    jedis.lpush(  "mylist" , "a" , "b", "c");//从左边存
    jedis.rpush( "mylist" , "a" , "b","c");//从右边存
    //list范围获取
    List<String> mylist = jedis.lrange( "mylist", 0,end: -1);
    system.out.println(mylist);
    // list 弹出
    String element1 = jedis.lpop( "mylist" ); 
    system.out.println(element1);
    String element2 = jedis.rpop( "mylist"); 
    system.out.println(element2);
    //list范围获取
    List<String> mylist2 = jedis.lrange("mylist",0,-1);
    system.out.println(mylist2);
    
    • set
    //set存储
    jedis.sadd( "myset", "java" , "php" , "c++" ) ;
    //set获取
    set<String> myset = jedis.smembers("myset" );
    system.out.println( myset);
    
    • sortedset
    //2.操作
      //sortedset存储
    jedis.zadd( "mysortedset" , 3,"亚瑟");
    jedis.zadd( "mysortedset" , 30,"后商");
    jedis.zadd( "mysortedset" , 25,"孙悟空");
    // sortedset获取
    Set<String> mysortedset = jedis.zrange( "mysortedset",0,end: -1);
    
Jedis连接池对象
 /**
     * redis连接池redisPool快速入门
     */
    @Test
    public void test02(){
        //0创建一个配置对象
        JedisPoolConfig config = new JedisPoolConfig();
        config.setMaxTotal(50);
        config.setMaxIdle(10);
        //1创建连接池对象
        JedisPool jedisPool = new JedisPool(config,"localhost",6379);
        //2连接池对象连接对象
        Jedis jdResource = jedisPool.getResource();
        //3使用方法
        jdResource.set("names","xiaoming");
        //归还数据库连接池连接
        jdResource.close();
    }
  • jedis连接池详细配置:

最大活动对象数
redis.pool.maxTotal=1000
最大能够保持idel状态的对象数
redis.pool.maxIdle=100
最小能够保持idel状态的对象数
redis.pool.minIdle=50
当池内没有返回对象时,最大等待时间
redis.pool.maxWaitMillis=10000
当调用borrow Object方法时,是否进行有效性检查
redis.pool.testOnBorrow=true
当调用return Object方法时,是否进行有效性检查
redis.pool.testOnReturn=true
空闲链接”检测线程,检测的周期,毫秒数。如果为负值,表示不运行“检测线程”。默认为-1.
redis.pool.timeBetweenEvictionRunsMillis=30000
向调用者输出“链接”对象时,是否检测它的空闲超时;
redis.pool.testWhileIdle=true
对于“空闲链接”检测线程而言,每次检测的链接资源的个数。默认为3.
redis.pool.numTestsPerEvictionRun=50
redis服务器的IP
redis.ip=xxxxxx
redis服务器的Port
redis.port=6379

  • Jedis工具类
    如果出现空指针异常,找不到properties文件,则必须把配置文件放到resource内。



    工具类:

public class JedisUtil {
    private static JedisPool jedisPool;
    static{
        //读取配置文件
        InputStream is = JedisUtil.class.getClassLoader().getResourceAsStream("jedis.properties");
        //创建Properties对象
        Properties pro = new Properties();
        //关联文件
        try {
            pro.load(is);
        } catch (IOException e) {
            e.printStackTrace();
        }
        //获取数据,设置到JedisPoolConfig中
        JedisPoolConfig config = new JedisPoolConfig();
        config.setMaxTotal(Integer.parseInt(pro.getProperty("maxTotal")));
        config.setMaxIdle(Integer.parseInt(pro.getProperty("maxIdle")));

        //初始化JedisPool
        jedisPool = new JedisPool(config,pro.getProperty("host"),Integer.parseInt(pro.getProperty("port")));
    }

    /**
     * 获取连接方法
     */
    public static Jedis getJedis(){
        return jedisPool.getResource();
    }
}

测试:

    /**
     * 通过redis连接池工具获取连接
     */
    @Test
    public void test03(){
        Jedis jdResource = JedisUtil.getJedis();
        //3使用方法
        jdResource.set("names","zhangsan");
        //归还数据库连接池连接
        jdResource.close();
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,634评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,951评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,427评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,770评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,835评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,799评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,768评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,544评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,979评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,271评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,427评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,121评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,756评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,375评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,579评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,410评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,315评论 2 352

推荐阅读更多精彩内容

  • 1 Redis介绍1.1 什么是NoSql为了解决高并发、高可扩展、高可用、大数据存储问题而产生的数据库解决方...
    克鲁德李阅读 5,283评论 0 36
  • 1 初认始redis 1.1起源 redis是一个开源的基于c语言编写,支持网络也开源支持内存持久化的日志类型,k...
    陈朝辉_39f7阅读 992评论 0 0
  • [if !supportLists]1.1.1[endif]安装环境 redis是C语言开发,安装redis需要先...
    三万_chenbing阅读 578评论 0 1
  • [TOC] Redis相关内容 Redis是单线程的,它是基于内存操作,CPU不是Redis的性能瓶颈,他的瓶颈是...
    拔魔Jian阅读 231评论 0 0
  • redis概念下载安装命令操作数据结构持久化操作使用Java客户端操作redis Redis 概念: redis是...
    abboo阅读 177评论 0 0