redis的基本指令学习

Redis

基本指令:

  • 登录redis服务:

    • 登录本地redis
    redis-cli
    或
    redis-cli -p 6379
    或
    redis-cli -p 6379 - a password  #-a后面为password,此操作需要开启redis.conf文件中的requirepass选项
    
    • 登录远程redis

      redis-cli -h ip -p 6379 -a password
      
  • 登录redis后在redis中的指令

    • 1.查看redis信息:info
      2.清空redis屏幕:clear
      3.退出redis服务:exit
      4.关闭redis服务:shutdown
      5.系统帮助:help
      
  • redis数据存储操作

    • 1.基于查看reids中的key:keys *
      
      2.基于key/value形式存储数据:set key value
      
      3.基于key获取redis中存储的数据:get key
      
      4.清除当前数据库数据:flushdb
      
      5.清除所有数据库数据:flushall
      
      6.key有效时间设计(秒杀操作的计时,缓存数据的有效时长):expire key seconds
      
      7.使用expire后可以查看key剩余时间:ttl key;
      
      8.当返回值为-2时,表示key被删除,当key不存在时,返回-2.当key存在但蜜月设置剩余生存时间时返回-1
      
      9.对特定key设置的生效时长失效:persist key(或者设置新的数据时,需要重新设置该key的生产时间,重新设置值也会清除生存时间)
      
      10.让key的生效时长以毫秒作为计量单位:pexpire key miliseconds
      

redis常用数据类型

redis中基础数据结构包含字符串,散列,列表,集合,有序集合

String类型操作实践:

字符串类型是redis中最简单的数据类型,它存储的值可以是字符串,其最大字符串长度支持到512M。基于此类型,可以实现博客的字数统计,将日志不断追加到指定key,实现一个分布式自增iid,实现一个博客的的点赞操作等

让键的值递增:incr key(如果key不存在,则会自动创建,如果存在则自动+1)
指定key的增长系数:incrby key increment

按照默认步长进行递减:decr key
按照指定步长进行递减:decrby key decrement

向尾部追加值。如果键不存在则创建该键,其值为写的value,即相当于SET key value。返回值是追加后字符串的总长度:APPEND key value

返回数据的长度,如果键不存在则返回0。注意,如果键值为空串,返回也是0:STRLEN key

同时设置多个键值:MSET key value [key value …]
同时获取多个键值:MGET key [key …]

java中String类型操作实践:

  /**
     * 将对象转换为字符串,然后以字符串类型的方式存储到redis,
     * 这种的的最大缺陷:修改对象数据不方便
     */
    @Test
    public void testStringJsonOper(){
        //1.建立连接
        Jedis jedis=new Jedis("192.168.126.129",6379);
        //2.将对象转换为json字符串
        Map<String,Object> map=new HashMap<>();
        map.put("id", "101");
        map.put("name","tony");
        Gson gson=new Gson();//Google公司提供
        String jsonStr=gson.toJson(map);//将map转换为json串
        System.out.println("jsonStr="+jsonStr);
        //3.将json字符串存储到redis
        jedis.set("member", jsonStr);
        //4.取出member对象的值
        String member = jedis.get("member");
        System.out.println("redis.member="+member);
        //5.将json字符串转换为Map对象
        map=gson.fromJson(member, Map.class);
        System.out.println(map);
        //6.释放资源
        jedis.close();
    }
    /**
     * 基于junit+jedis对redis中的string类型进行测试
     */
    @Test
    public void testStringOper() throws InterruptedException {
        //1.建立链接
        Jedis jedis=new Jedis("192.168.126.129",6379);
        //2.向redis中存储数据
        jedis.set("id", "1");
        jedis.set("name", "Tony");
        jedis.set("token", UUID.randomUUID().toString());
        jedis.expire("token", 2);
        //3.更新redis中指定数据
        jedis.set("id", "100");
        jedis.incr("id");
        jedis.incrBy("id", 2);
        jedis.decr("id");
        //4.删除redis中指定数据
        jedis.del("name");
        //5.查看redis中的数据
        String id = jedis.get("id");
        String token=jedis.get("token");
        Long tokenStrLen=jedis.strlen("token");
        String name=jedis.get("name");

        System.out.println("id="+id);
        System.out.println("name="+name);
        System.out.println("token="+token);
        System.out.println("token.length="+tokenStrLen);
        //Thread.sleep(2000);
        TimeUnit.SECONDS.sleep(2);
        token=jedis.get("token");
        System.out.println("token="+token);
        //6.释放资源
        jedis.close();
    }

Hash类型应用实践

Redis散列类型相当于Java中的HashMap,实现原理跟HashMap一致,一般用于存储对象信息,存储了字段(field)和字段值的映射,一个散列类型可以包含最多232-1个字段。

1.存储/获取:(hset命令不区分插入和更新操作,当执行插入操作时hset命令返回1,当执行更新操作时返回0)
	hset key field value
	hget key field
	hmset key field value [field value....]
	hmget key field value [field value....]
	hgetall key
	
2.自增(Hash类型中没有自减命令)
	hincrby key field -1/+1
	
3.判断属性是否存在:(返回值为1则存在,返回值为2则不存在)
	hexists key field
	
4.删除属性:hdel key field

5.只获取字段名hkeys:hkeys key

6.只获取字段值hvals: hvals key

	

List类型实践

Redis的list类型相当于java中的LinkedList,其原理就就是一个双向链表。支持正向、反向查找和遍历等操作,插入删除速度比较快。经常用于实现热销榜,最新评论等的设计

1.在key对应list的头部添加字符串元素:lpush mylist "xxx"
2.返回列表中指定区间内的元素:lrange mylist 0 -1    (Redis Lrange 返回列表中指定区间内的元素,区间以偏移量 START 和 END 指定。 其中 0 表示列表的第一个元素, 1 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推)

3.在key对应list的尾部添加字符串元素:rpush mylist "xxx"

4.删除:del mylist

5.在key对应list的特定位置之前或之后添加字符串元素:linsert mylist3 "xxx" "hello"

6.设置list中指定下标的元素值(一般用于修改操作):lset list3 0 "one"

7.从key对应list中删除count个和value相同的元素,
		count>0时,按从头到尾的顺序删除:lrem mylist3 +2 "hello"
		count<0时,按从尾到头的顺序删除:lrem mylist3 -2 "hello"
		count=0时,删除全部

8.保留指定key 的值范围内的数据:ltrim mylist3 1 -1

9.从list的头部删除元素,并返回删除元素:lpop mylist3
10.从list的尾部删除元素,并返回删除元素:rpop mylist3

11.返回key对应list的长度:llen mylist3

12.返回名称为key的list中index位置的元素:lindex mylist 1[2,3...]

Set类型应用实践

Redis的Set类似Java中的HashSet,是string类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。Redis中Set集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。

1.添加元素,重复元素添加失败,返回0:sadd name1 tony

2.获取内容:smembers name1

3.移除并返回集合中的一个随机元素:spop name1

4.获取成员个数:scard name1

5.移动一个元素到另外一个集合:smove name1 name2 tony

6.并集:sunion name1 name2


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值