Redis总结(一)基础类型总结

一、redis支持的数据结构:

最近开始总结redis的相关知识,毕竟今年的行情不好,时刻总结回顾知识点,投资自己哪怕被优化也能时刻上手面试。
1、String
特点:
一个键能储存512MB
string类型是二进制安全的,可以存储任何数据,比如jpg图片或序列化对象;
适用场景:常规key-value缓存应用。常规计数: 微博数, 粉丝数。

2、Hash
适用场景:比较适合于存储对象

3、List
适用场景:Redis list的应用场景非常多,也是Redis最重要的数据结构之一,比如twitter的关注列表,粉丝列表等都可以用Redis的list结构来实现。使用Lists结构,我们可以轻松地实现最新消息排行等功能。Lists的另一个应用就是消息队列,可以利用Lists的PUSH操作,将任务存在Lists中,然后工作线程再用POP操作将任务取出进行执行。Redis还提供了操作Lists中某一段的api,你可以直接查询,删除Lists中某一段的元素。

4、set
适用场景:set是一个无需且自动排重的列表数据,如果需要存储一个列表,不希望有重复数据,可以选择使用set,并且set提供了判断成员是否存在的接口。

实现方式:set 的内部实现是一个value永远为null的HashMap,实际就是通过计算hash的方式来快速排重的,这也是set能提供判断一个成员是否在集合内的原因。

5、zset
适用场景:与set唯一的区别就是有序,如果需要存储一个列表希望没有重复数据且有序,则可以使用。

实现方式:zset的内部使用HashMap和跳跃表(SkipList)来保证数据的存储和有序,HashMap里放的是成员到score的映射,而跳跃表里存放的是所有的成员,排序依据是HashMap里存的score,使用跳跃表的结构可以获得比较高的查找效率,并且在实现上比较简单。

6、Redis HyperLogLog

用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定 的、并且是很小的。在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近2^64个不同元素的基数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。

二、redis支持数据结构的基本操作

1、String

  • jedis.set("key1", "value1"); //设置键值
  • jedis.get("key1"); //通过键获取值
  • jedis.delete("key1"); //通过key删除值
  • jedis.getSet("key2", "new_value2");//通过key设置新值并返回旧值
  • jedis.getrange("key2", 0, 3);//通过key截取值的部分
  • jedis.append("key2", "_app"); //通过key拼接字符串,并返回新的长度
  • jedis.incr("key");//redis自增,如果不存在则赋值为1,如果存在则加一
  • jedis.incrBy("key",2);//针对key增加响应的值
  • jedis.decr("key");redis递减,如果不存在则赋值-1,存在则减一
  • jedis.decrBy("key",2);//针对key减去相应的值

2、Hash

  • jedis.hset("key1","field","value");//设置key及对应的field和value
  • jedis.hget("key1","field");//通过key及field获取value,返回值为String
  • jedis.hexists("key1","field");//通过key及field判断是否存在缓存
  • jedis.hgetAll("key1");//通过key获取所有的field及value,返回值为Map<String,String>
  • jedis.hincrBy("key1","field",2);//通过key以及field增加相应的值
  • jedis.hvals("key1");//获取key中对应的所有value
  • jedis.hkeys("key1");//获取key中对应的所有field值
  • jedis.hmget("key1","field");//通过key及field获取value,返回值为List<String>
  • jedis.hdel("key1","field");//删除缓存

3、List

  • jedis.lpush("key","value"); //从左边往链表push值
  • jedis.rpush("key","value");//从右边往链表push值
  • jedis.lindex("key",0);//取从左边开始下标为0的数据
  • jedis.llen('key');//获取链表的长度
  • jedis.lpop("key");//删除左边第一个元素
  • jedis.rpop("key");//删除右边第一个元素
  • jedis.linsert("key", Client.LIST_POSITION.BEFORE,"value1","value2");//在value1前面插入value2
  • jedis.linsert("key", Client.LIST_POSITION.AFTER,"value1","value2");//在value1后面插入value2
  • jedis.lrange("key",index1,index2);//获取下标index1到index2的数据
  • jedis.lrem("key",2,"value");//删除两个值为value的成员
  • jedis.lset("key",1,"value");//将下标为1的值置为value

4、Set

  • jedis.sadd("key","value1","value2");//往set列表添加值
  • jedis.scard("key");//查看集合长度
  • jedis.sdiff("key1", "key2");//查看两个集合中的差集
  • jedis.sdiffstore("newKey", "key1", "key2");//将两个集合中的差集保存到新的集合中
  • jedis.sinter("key1", "key2");//查看两个集合中的并集
  • jedis.sinterstore("newKey", "key1", "key2");//将两个集合中的并集保存到新的集合
  • jedis.sismember("key", "value");//查看集合中是否存在value
  • jedis.smembers("key");//获取key集合中所有的value

5、Zset

  • jedis.zadd("key",score,"value");//添加元素,并设置分值
  • jedis.zcard("key");//得到集合中的元素数量
  • jedis.zcount("key",score1,score2);//得到分值在这个区间的元素数量
  • jedis.zrange("key",1,3);//截取下标范围的value值
  • jedis.zrangeByScore("key",0,-1);取集合中所有数据并按score排序
  • jedis.zrem("key","member");//删除指定成员

6、HyperLogLog

  • jedis.pfadd("key","value1","value2");//添加指定元素到 HyperLogLog 中
  • jedis.pfcount("key");//返回指定基数
  • jedis.pfmerge("newkey","key1","key2");//合并多个 HyperLogLog,并将其保存在 desKey 中
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 本文为笔者对在学习Redis过程中所收集资料的一个总结,目的是为了以后方便回顾相关的知识,大部分为非原创内容。特此...
    EakonZhao阅读 14,884评论 0 9
  • Redis命令运行于redis服务器上,要在服务器上运行命令需要一个redis客户端,在安装Redis安装包时,我...
    第八共同体阅读 1,666评论 0 0
  • 什么是Redis?   官方文档解释:Redis is an open source (BSD licensed)...
    纸中圆阅读 2,972评论 0 0
  • 1、redis是什么: Redis is an open source, BSD licensed, advanc...
    huangxiongbiao阅读 5,583评论 0 2
  • [if !supportLists]1.1.1[endif]安装环境 redis是C语言开发,安装redis需要先...
    三万_chenbing阅读 3,720评论 0 1

友情链接更多精彩内容