码迷,mamicode.com
首页 > 其他好文 > 详细

redis

时间:2018-01-25 15:43:34      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:识别   并运算   说明   center   exp   c语言   sorted   提升   类型   

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的五种数据类型

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             查看类型

 

运算:

  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

标签:识别   并运算   说明   center   exp   c语言   sorted   提升   类型   

原文地址:https://www.cnblogs.com/dan-baishucaizi/p/8342600.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!