redis 相关总结

Redis是一个非关系型数据库,支持String、List、Hash、Set和Zset等数据类型。常用操作包括键的过期、获取、删除以及各种数据类型的插入、查询和修改。Redis常用于缓存,减少数据库压力,还能防止重复点击和构建排行榜。处理热key问题,可以通过分片和本地缓存策略来提高性能。
摘要由CSDN通过智能技术生成

redis 是k-v形式的非关系型数据库 其有5种基本数据类型 比如 String list  hash set zset  这些数据类型都指的是 v的类型  key 还是字符串类型。

首先对key的操作有

       1.expire   设置key 的过期时间

       2. ttl   查看key还有多久过期

       3.del   删除key

       4.exists  判断key 是否存在

 

然后是value 为String 类型的操作有

    1.set  key value   设置  key  value  如果key存在 value会被覆盖;

    2. get  key  通过key拿到value;

    3.append  key  value   追加操作 如果key不存在那么就创建一个新的 key  value;

   4.strlen  key   通过key 获得value 的长度;

  5. incr key      值加一;

  6.decr  key   值减一;

 7.getrange  key   start  end   获得一个区间的值  最左边是0  最右边是 -1;

8.setex  key seconds value  设置值的同时 设置过期时间;

9.setnx  key  value   如果key 不存在 则 设置 key  value  返回1  如果存在返回0

 

然后是list  有序可重复的列表

     1. lpush key value1 value2   从左边开始放 ;

     2.lrange key start end   获取列表中指定下标区间的元素;

      3.rpush key value1 value2  将一个或多个值依次插入列表尾部;

     4.lpop key   删除最左边的元素 并返回删除的值;

     5.rpop key  删除最右边的元素并返回值;

      6.lindex key index  获取指定列表中指定下标的元素并返回;

     7.llen key 获取指定列表的长度;


然后是set   值是无序不可重复的

 

      1.sadd key  value1  value2  添加;

       2.smembers key  获得所有的元素;

       3.sismember  key  value1  判断 value1是否存在;存在返回1 不存在返回0

        4.scard key  获得元素的个数

       5.srem key value1   value2 删除 元素 value1 value2;

       6.spop  key   count 默认为1  从集合中 随机弹出 count个元素;

       7.srandmember key  count    随机删除 count 个;

       8 . 交际  sinter   key1  key2  两个集合的交集;

      9. 并集  sunion key1 key2;

      10 差集  sdiff  key1 key2;

 

   hash  value 是hash类型  k1-v1  k2-v2

         1.hset key filed value       将一个或多个键值对存储到指定集合中

            2.hget key filed; 获取hash表中指定的filed值

            3.  hgetall key;获取指定hash表中的所有filed和value

            4.hdel key filed1 filed2... 删除指定hash表中的一个或者多个filed

            5.hlen key 获取指定hash表中所有的filed的个数

           6.hexists key filed      判断指定hash表中指定的filed是否存在

        7.hkeys key;     获取指定hash表中所有filed的列表

       8. hvals key;    获取指定hash表中所有value的值

有序单列集合:zset()value 根据score排序

          1. zadd key score1 member1 score2 member2     将一个或者多个member及score加入有序集合:

           2.   zrange key start end根据指定集合获取指定区间的元素

            3. zrangebyscore key min max  根据指定分数区间获取元素  zrevrange key  倒叙输出

             4.zrem key member1 member2    删除指定集合中一个或多个指定元素

          5.zcard key     获取集合中元素的个数

            6. zrank key member    获取指定元素的排名 zrevrank(倒叙排名:从大到小)

           7.  zcount key min max    获取指定集合中在指定分数区间的元素个数

           8. zscore key member      获取指定集合中的指定元素的分数


上面就是一些基本数据结构 下面再说一下

 

  Geo

      1.geoadd key  精度  纬度  城市        添加

       2.geopos key  城市   查看城市的精度维度

      3.zrange key 0 -1   查看所有城市

       4.geodist key  城市1  城市2  km(单位) 查看城市1 与2之间的距离

        5.georadius key  精度 维度  范围  单位   查看指定精度维度 的范围下的所有城市

       6.georadiusbymember key  城市  范围 单位  查询城市 范围内所有的城市

       7.zrem  key  城市  删除城市;

redis 一般我们可以用来做什么呢?

        首先想到的 就是缓存 可以降低我们数据库的压力 但是也不是什么都可以放到redis 中 一般我们放的都是读多写少的数据 。

       还有就是可以做 防止重复点击 因为redis 天然就是排队 单线程的 所以我们可以在点击的时候从redis中查询判断 是否在一定时间内 已经重复点击了 。

      redis 的zset 数据结构 天然就可以排序 那么就可以做排行榜。

redis 的热key 如何解决?

     首先什么是热key 就是比如一场活动 频繁的访问这一个key  导致redis 的性能下降 那么我们可以怎么解决  首先我们可以对这个热key 分别分配到不同的分片上 然后我们可以根据不同的用户id 去路由到不同的分片上 这样可以解决 , 我们还可以使用本地缓存来解决 因为本地缓存不需要有网络的io 所以他的效率比redis还要高,但是同样也会有不一致的现象 但是既然可以使用本地缓存那么不一致也没有太大的关系了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值