Redis

简介

  1. Redis开源免费的,是一个key-value形式的数据库
  2. Redis支持数据的持久化,可将内存中的数据写入磁盘中,重启的时候可以再次加载使用
  3. Redis支持String,list,set,zset,hash等数据结构的存储。

Redis的优势

  1. 性能极高,读写的速度极快
  2. 丰富的数据类型,支持String,list,set,zset,hash等数据结构的存储
  3. Redis所有的操作都遵循原子性,要么执行成功要么执行失败

Redis的安装

  1. window下安装
    下载地址:https://github.com/MSOpenTech/redis/releases。
    Redis支持32bit和64bit
  2. Linux 下安装
    下载地址:http://redis.io/download,下载最新稳定版本。
  3. 打开一个 cmd 窗口 使用 cd 命令切换目录到 Redis目录下运行
  4. 开启服务:redis-server.exe redis.windows.conf
  5. 另起一个cmd窗口,执行Redis客户端:redis-cli.exe -h 127.0.0.1 -p 6379

Redis数据类型

Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。

  1. String是Redis最基本的数据类型,String类型最大能存储512MB,且存储方式为一个 key 对应一个 value
  2. Hash是一个键值(key=>value)对集合,Hash适用于存储对象
  3. list是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
  4. Set 是 string 类型的无序集合。
  5. zset 和 set 一样也是string类型元素的集合,且不允许重复的成员,但是根据score分数进行排序

Redis命令

Redis 键命令用于管理 redis 的键。

对字符串的操作

  1. set key value //将字符串值value关联到key
  2. get key //返回key关联的字符串值
  3. mset //同时设置一个或多个 key-value 对
  4. mget //返回所有(一个或多个)给定 key 的值
  5. incr key //将 key 中储存的数字值增1(key不存在,则初始化为0,再加1)
  6. decr key //将 key 中储存的数字值减1(key不存在,则初始化为0,再减1)
  7. incrBy key //自增多少
  8. decrBy key //自减多少

对key的常用操作

  1. keys * //获取所有key列表
  2. del key //删除key
  3. expire key xx //设置key的过期时间(xx秒后过期)
  4. ttl key //查看key的过期时间
  5. flushall //清空整个redis服务器数据,所有的数据库全部清空(慎用)
  6. flushdb //清除当前库,redis中默认有16个数据库,名称分别为0,1,2.。。15
  7. select index //跳转到某库

对list的常用操作

  1. lpush key value //将一个或多个值 value 插入到列表 key 的表头(最左边)
  2. rpush key value //将一个或多个值 value 插入到列表 key 的表尾(最右边)
  3. lpop key //移除并返回列表 key 的头(最左边)元素。
  4. rpop key //移除并返回列表 key 的尾(最右边)元素。
  5. lpop key //移除并返回列表 key 的头(最左边)元素。
  6. rpop key //移除并返回列表 key 的尾(最右边)元素。
  7. lrange key start stop //返回列表 key 中指定区间内的元素,查询所有的stop为-1即可
  8. lrem key count value //根据count值移除列表key中与参数 value 相等的元素count > 0 : 从表头开始向表尾搜索,移除与 value 相等的元素,数量为 count 。count < 0 : 从表尾开始向表头搜索,移除与 value 相等的元素,数量为 count 的绝对值。count = 0 : 移除表中所有与 value 相等的值。
  9. lindex key index //返回列表 key 中,下标为 index 的元素
  10. trim key start stop //对一个列表进行修剪

对set集合的常用操作

  1. sadd key member //将一个或多个 member 元素加入到集合 key 当中,已经存 在于集合的 member 元素将被忽略
  2. srem key member //移除集合 key 中的一个或多个 member 元素,不存在的 member 元素会被忽略
  3. smembers key //返回集合 key 中的所有成员。

对hash类型的常用操作

  1. hset key name value //添加一个name=>value键值对到key这个hash类型
  2. hget key name //获取hash类型的name键对应的值
  3. hmset key name1 key1 name2 key2 //批量添加name=>value键值对到key这个hash类型
  4. hmget key name1 name2 //批量获取hash类型的键对应的值
  5. hkeys //返回哈希表 key 中的所有键
  6. hvals //返回哈希表 key 中的所有值
  7. hgetall //返回哈希表 key 中,所有的键和值

事务操作

  1. multi //标记一个事务块的开始。
  2. exec //执行所有事务块内的命令。

Redis安全密码

  1. CONFIG set requirepass key //设置密码
  2. CONFIG SET requirepass “” //清除密码
  3. AUTH key //身份验证

JAVA使用Redis

  1. 在 Java 中使用 Redis 前, 我们需要确保已经安装了 redis 服务及 Java redis 驱动
  2. 要下载驱动包 下载 jedis.jar,架包:jedis-2.9.0.jar
  3. 测试如下
public class Redis_Test {
    @Test
    public void testName()throws Exception{
        // java客户端
        Jedis jedis=new Jedis();
        // 密码
        jedis.auth("123456");
        jedis.set("test2", "xxxx");
        String test2 = jedis.get("test2");
        System.err.println(test2);
        jedis.close();
    }

    // 连接池 数据源  复用
    @Test
    public void pool()throws Exception{
        // 配置对象
        GenericObjectPoolConfig poolConfig =new GenericObjectPoolConfig();
        poolConfig.setMaxTotal(20);
        poolConfig.setMaxIdle(5);
        // 池对象
        JedisPool jedisPool=new JedisPool(poolConfig, "localhost", 6379,2000,"123456");
        // 从池里面获取yoghurtedis对象
        Jedis jedis = jedisPool.getResource();
        jedis.set("test2", "xxxx");
        String test2 = jedis.get("test2");
        System.err.println(test2);

    }


    // list
    @Test
    public void list()throws Exception{
        // 配置对象
        GenericObjectPoolConfig poolConfig =new GenericObjectPoolConfig();
        poolConfig.setMaxTotal(20);
        poolConfig.setMaxIdle(5);
        // 池对象
        JedisPool jedisPool=new JedisPool(poolConfig, "localhost", 6379,2000,"123456");
        // 从池里面获取yoghurtedis对象
        Jedis jedis = jedisPool.getResource();
        jedis.lpush("list","zs","ls","ww");
        List<String> list = jedis.lrange("list", 0, -1);
        for (String s : list) {
            System.err.println(s);
        }
    }


    // 排序
    @Test
    public void sort()throws Exception{
        // 配置对象
        GenericObjectPoolConfig poolConfig =new GenericObjectPoolConfig();
        poolConfig.setMaxTotal(20);
        poolConfig.setMaxIdle(5);
        // 池对象
        JedisPool jedisPool=new JedisPool(poolConfig, "localhost", 6379,2000,"123456");
        // 从池里面获取yoghurtedis对象
        Jedis jedis = jedisPool.getResource();
        jedis.lpush("list2","10","15","14");
        SortingParams sortingParams=new SortingParams();
        sortingParams.desc();
        List<String> list2 = jedis.sort("list2", sortingParams);
        System.err.println(list2);

    }

    // 字母排序
    @Test
    public void abcdsort()throws Exception{
        // 配置对象
        GenericObjectPoolConfig poolConfig =new GenericObjectPoolConfig();
        poolConfig.setMaxTotal(20);
        poolConfig.setMaxIdle(5);
        // 池对象
        JedisPool jedisPool=new JedisPool(poolConfig, "localhost", 6379,2000,"123456");
        // 从池里面获取yoghurtedis对象
        Jedis jedis = jedisPool.getResource();
        jedis.lpush("list3","a","d","c");
        SortingParams sortingParams=new SortingParams();
        sortingParams.alpha();
        List<String> list3 = jedis.sort("list3", sortingParams);
        System.err.println(list3);


    }



    // 事务
    @Test
    public void transtion()throws Exception{
        // 配置对象
        GenericObjectPoolConfig poolConfig =new GenericObjectPoolConfig();
        poolConfig.setMaxTotal(20);
        poolConfig.setMaxIdle(5);
        // 池对象
        JedisPool jedisPool=new JedisPool(poolConfig, "localhost", 6379,2000,"123456");
        // 从池里面获取yoghurtedis对象
        Jedis jedis = jedisPool.getResource();
        jedis.flushDB();
        // 开启事务
        Transaction multi = jedis.multi();
        multi.set("name", "kd");
        multi.set("age", "18");
        multi.incr("age");
        multi.incr("name");
        // 执行
        List<Object> exec = multi.exec();
        for (Object o : exec) {
            // 是不是Exception
            if(o instanceof  Exception){
                System.err.println(o);
            }

        }

    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值