redis

Posted 巴蜀秀才

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis相关的知识,希望对你有一定的参考价值。

redis

  Redis是由意大利人Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库。Redis全称为:Remote Dictionary

Server,该软件使用C语言编写,Redis是一个key-value存储系统,它支持丰富的数据类型,如:string、list、set、zset(sorted set)、

hash。

  Redis特点:Redis以内存作为数据存储介质,所以读写数据的效率极高,远远超过数据库。

  Redis应用场景:因为Redis交换数据快,所以在服务器中常用来存储一些需要频繁调取的数据,这样可以大大节省系统直接读取

磁盘来获得数据的I/O开销,更重要的是可以极大提升速度。

  将这种热点数据存到Redis(内存)中,要用的时候,直接从内存取,极大的提高了速度和节约了服务器的开销。

  在Linux中输入命令:redis-cli  进入redis;如果没有安装则使用下面的命令:

    sudo apt-get update

    sudo apt-get install redis-server

 

进入redis数据库:redis-cli  注意中间没有空格

选择数据库:select ‘序号’

  

  默认一共有16个数据库

redis的五种数据类型

string   字符串

  由于是键值对,所以键必须唯一

  设置:set key value   如:set name \'dc\'

       mset key value key value..  如:mset dcuser \'吴哲\' id 3

  获取:get key   如:get name

       mget key key..   如:mget dcuser id

        

       这里中文解码失败,跟编码方式有关:我们可以在进入redis的时候使用命令:redis-cli  --raw,上面右图是修改之后的!

  查看过期时间:ttl key    -1表示永久   -2表示不存在

  设置过期时间:expire key seconds  如:exprie name 15

    设置关键字的时候设置:set key value ex seconds   或  setex key seconds value

  追加:append key value   不会覆盖以前的值,而是在后边添加

  

key的操作:

    keys *                查看所有的key

    del key               删除某个key

    exists key          查看是否存在  存在返回1,不存在返回0

    type key             查看类型

    keys pattern       查看键,参数支持正则表达式

 

运算:

  incr key        给key加1;

  decr key         给key减1;

  incrby key increment   给key加increment   如:incrby key 50,给key加50

  decrby key increment  给key减去increment

  

  注意这里只能识别字符串里的数字,如果字符串里有非数字的符号,则会报错!

 

list 列表:

  设置列表:  左添加:lpush key value         如:lpush my_llist 1 2 3 4

         右添加:rpush key value    如:rpush my_rlist 1 2 3 4

  查看列表:  lrange my_list 0 -1

      

       

      观察上图可以看出:lpush添加的元素是往已有元素的左边添加;

               rpush添加的元素是往已有元素的右边添加。

  查询列表:

    列表长度:llen  [列表名]

        

    列表某索引对应的值: lindex [列表名] index

        

        上图说明索引是从0开始取的

   删除元素:

    lpop  key    删除key左边的第一个元素

    rpop  key    删除key右边的第一个元素

       

    lrem key count value     指定删除某个值;count为正数时从左往右删相应个数,为负数时从右往左删除相应个数,为0则全删!

    

    

 

哈希hash:    

  哈希类似于python中的字典,并且字典中的value仍然是一个字典

  设置: hset key field value   如:hset huser name dan

      hmset key field value field value...

  获取: hget key field     如:hget huser name

      hmget key field field...

  删除: hdel key field      如:hdel huser name

       

      观察右图不难发现huser并没有显示出来,那是因为value被删除了,huser已经没用了,所以清除内存!

      

  获取所有的(field,vlaue)-->: hgetall key ;        所有的field-->: hkeys key ;    所有的value-->: hvals key   :

        

  获取field的个数:    hlen key

      

 

set 集合:

  设置:sadd key values        集合是无序且唯一的,如果values中有同样的元素,则只会保留一个

  获取:smembers key

  删除:srem key member   指定删除;spop key    随机删除一个元素

        

  获取集合个数:scard key

     

     只有5个元素了,因为刚刚删除了两个!

  随机返回一个集合的元素: srandmember key     类似于抽一个幸运观众,我们抽到了h

        

  集合的运算:交,并,差:

    交:sinter key1 key2 ..    ;       sinterstore newkey key1 key2  将交赋予给新集合newkey

       并:sunion key1 key2 ...    ;    sunionstore newkey key1 key2   将并赋予给新集合

       差:sdiff key1 key2 ...   ;         sdiffstore newkey key1 key2    将差赋予给新集合

     

    注意这里新集合的名字都是my_set3所以后面的会覆盖前面的!差运算也类似,但是要注意交和并运算是可以交换前后顺序的

但是差运算是不能交换顺序的!和数学的情况一摸一样!!!

    

 

zset 有序集合:

  设置:zadd key score member      ;   如:zadd  my_zset 1 \'one\'

  获取:zrange key start stop    (withscores)   正序获取

     zrevrange key start stop    (withscores)   倒叙获取

     

  删除:zrem key member        如:zrem my_zset two

        

  查看元素的索引:索引是从0开始的

     正序查找:zrank key member            如:  zrank my_zset three

     倒叙查找:  zrevrank key member       如:zrevrank my_zset three   倒叙查找出的索引是倒着数的

  查看有序集合的元素个数:zcard key         如:zcard my_zset

  zrangebyscore 返回集合中 score 在给定区间的元素

    如:zrangebyscore my_zset 2 3 withscores    包括scores为3的member

  zcount 返回集合中 score 在给定区间的数量

    如:zcount my_zset 1 4   ,  注意返回3是因为删除two时2被删除了,所以只有3个

     

  zscore : 查看score值

    如:zscore my_zset two   two已经删除,所以不会返回任何值

     

  zremrangebyrank : 删除集合中排名在给定区间的元素(正向)

    如:zremrangebyrank my_zset 1 3

       

  zremrangebyscore : 删除集合中 score 在给定区间的元素

    如:zremrangebyscore my_zset 3 5

    

 

以上是关于redis的主要内容,如果未能解决你的问题,请参考以下文章

redis存储session配制方法

Redis实现分布式锁(设计模式应用实战)

Redis实现分布式锁(设计模式应用实战)

Redis缓存:java语言注释符号,附超全教程文档

spring boot 整合 redis

Redis 学习 —— 数据类型及操作