Java学习日记之Redis

Redis

  一、概念

    redis是一款高性能的NOSQL的非关系型数据库

  二、下载安装

    1.官网:https://redis.io

     2.中文网:https://www.redis.net.cn

     3.解压后可直接使用:

      * redis.windows.conf:配置文件

      * redis-cli.exe:redis的客户端

      * redis-server.exe:redis的服务器端

  三、命令操作

     1.redis的数据结构:

      * redis存储的是key,value格式的数据,其中key都是字符串,value有五种不同的数据类型

        * value的数据类型:

          1) 字符串类型:string

          2) 哈希类型:hash:map

          3) 列表类型:list:linkedlist格式

          4) 字符串类型:set:

          5) 字符串类型:sortedset

     2.字符串类型 string

          1) 存储:set key value

          2) 获取:get key

          3) 删除:del key

 

127.0.0.1:6379> set usename zhangsan
OK
127.0.0.1:6379> get usename
"zhangsan"
127.0.0.1:6379> set pwd 123
OK
127.0.0.1:6379> get pwd
"123"
127.0.0.1:6379> del pwd
(integer) 1
127.0.0.1:6379> get pwd
(nil)  //表示为空

 

     3.哈希类型 hash

            1) 存储:hset key field value

          2) 获取:

              * hget key field:获取指定的field对应的值

              * hgetall key :获取所有的field和value

          3) 删除:hdel key field

 

127.0.0.1:6379> hset myHash username zhangsan
(integer) 1
127.0.0.1:6379> hset myHash username lisi
(integer) 0
127.0.0.1:6379> hset myHash pwd 123
(integer) 1
127.0.0.1:6379> hget myHash pwd
"123"
127.0.0.1:6379>
127.0.0.1:6379> hdel myHash username
(integer) 1
127.0.0.1:6379> hget myHash username
(nil)

 

     4.列表类型 list:可以添加一个元素到列表的头部(左边)或者尾部(右边)

            1) 存储:

              *lpush key value:将元素加入列表左边

              *rpush key value:将元素加入列表右边

          2) 获取:

              * lrange key start end:范围获取[ 获取所有:0 -1 (-1代表最后一个、-2代表倒数第二个,以此类推) ]

          3) 删除:

              *lpop key :删除列表最左边的元素,并将该删除的元素返回

              *rpop key :删除列表最右边的元素,并将该删除的元素返回

 

127.0.0.1:6379> lpush myList a
(integer) 1
127.0.0.1:6379> lpush myList b a
(integer) 3
127.0.0.1:6379> rpush myList c
(integer) 4
127.0.0.1:6379> lrange myList 0 -1
1) "a"
2) "b"
3) "a"
4) "c"
127.0.0.1:6379> rpop myList
"c"
127.0.0.1:6379> lpop myList
"a"
127.0.0.1:6379> lrange myList 0 -1
1) "b"
2) "a"
127.0.0.1:6379> llen myList
(integer) 2

 

     5.哈希类型 set:不允许重复元素

            1) 存储:sadd key value

          2) 获取:smembers key:获取set集合中所有元素

          3) 删除:srem key value:删除set集合中的某个元素

 

127.0.0.1:6379> sadd mySort a b c
(integer) 3
127.0.0.1:6379> smembers mySort
1) "c"
2) "b"
3) "a"
127.0.0.1:6379> sadd mySort cc ss
(integer) 2
127.0.0.1:6379> smembers mySort
1) "c"
2) "b"
3) "a"
4) "cc"
5) "ss"
127.0.0.1:6379> srem mySort ss
(integer) 1
127.0.0.1:6379> smembers mySort
1) "cc"
2) "a"
3) "b"
4) "c"
127.0.0.1:6379> srem mySort b
(integer) 1
127.0.0.1:6379> smembers mySort  //更改后再次查询顺序也随之改变
1) "a"
2) "c"
3) "cc"

 

     6.哈希类型 sortedset:不允许重复元素,且元素有顺序

            1) 存储:zadd key score value

          2) 获取:zrange key start end

          3) 删除:zrem key value

 

127.0.0.1:6379> zadd mySet 1 one
(integer) 1
127.0.0.1:6379> zadd mySet 2 two
(integer) 1
127.0.0.1:6379> zadd mySet 3 three
(integer) 1
127.0.0.1:6379> zrange mySet 0 -1
1) "one"
2) "two"
3) "three"
127.0.0.1:6379> zadd mySet 0 zore
(integer) 1
127.0.0.1:6379> zrange mySet 0 -1
1) "zore"
2) "one"
3) "two"
4) "three"
127.0.0.1:6379> zrem mySet one
(integer) 1
127.0.0.1:6379>  zrange mySet 0 -1
1) "zore"
2) "two"
3) "three"
127.0.0.1:6379> zrange mySet 0 -1 withscores
1) "zore"
2) "0"
3) "two"
4) "2"
5) "three"
6) "3"

 

    7.通用命令

            1) keys *:查询所有的键

          2) type key:获取键对应的value的类型

          3) del key:删除指定的key value

 

  四、持久化

    1.redis是一个内存数据库

          当redis服务器重启,或者电脑重启,数据会丢失。我们可以将redis内存中的数据持久化保存到硬盘中。

    2.redis持久化机制

          1)RDB:默认方式(可能会丢失数据)

            * 在一定的间隔时间中,检测key的变化情况,然后持久化数据

            1. 编辑 redis.windows.conf

              #   after 900 sec (15 min) if at least 1 key changed

              save 900 1


              #   after 300 sec (5 min) if at least 10 keys changed    

              save 300 10

 

              #   after 60 sec if at least 10000 keys changed
              save 10 1

            2. 在命令行中输入 redis-server.exe redis.windows.conf 打开服务器端(持久化将会创建 dump.rdb 文件记录)

            3.重启redis服务器,查看持久化的数据

          2)AOF:(影响性能)

            * 日志方式的记录,可以记录每一条命令的操作。在每一次命令操作后,持久化数据

            1. 编辑 redis.windows.conf

              appendonly no(关闭aof状态) -->  appendonly yes(打开aof状态)

              # appendfsync always:每一次操作都进行持久化
              appendfsync everysec:每隔一秒进行一次持久化
              # appendfsync no:不进行持久化

 

            2. 在命令行中输入 redis-server.exe redis.windows.conf 打开服务器端(持久化将会创建 appendonly.aof 文件记录)

            3.重启redis服务器,查看持久化的数据

 

  五、Java客户端 Jedis

    * Jedis:一款Java操作redis数据库的工具

    * 使用步骤

      1. 下载jedis的jar包

        commons-pool2-2.3.jar

        jedis-2.7.0.jar

      2. 使用

        * Jedis jedis = new Jedis("localhost", 6379); //创建Jedis对象

        或 Jedis jedis = new Jedis(); //调用空构造器 默认 host:localhost, port:6379

        * 调用Jedis对象中的方法(方法名称和五种数据类型的命令操作一致

          以存储为例:

          String:jedis.set("name","zhangsan");

          Hash:jedis.hset("user","uname","zs");

          List:jedis.lpush("mylist","a","b","c");

          Set:jedis.sadd("myset","a","b");

          SortedSet:jedis.zadd("mySortedSet",90,"zs");

    * jedis连接池:JedisPool

      *使用:

        0.创建一个配置对象
                JedisPoolConfig poolConfig = new JedisPoolConfig();

           //根据要求配置连接池的属性
                  poolConfig.setMaxTotal(50);
                poolConfig.setMaxIdle(10);

 

           //将配置完的poolConfig加到jedisPool构造器参数中

          JedisPool jedisPool = new JedisPool(poolConfig,"localhost",6379);

 

        1.创建 JedisPool连接池对象
               JedisPool jedisPool = new JedisPool();

        2.调用方法 getResource()方法获取Jedis连接

          Jedis jedis = jedisPool.getResource();

 

posted @ 2020-04-24 00:27  bird7  阅读(176)  评论(0编辑  收藏  举报