redis 基本操作

1. 什么是Redis

  1. Redis是由意大利人Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库。Redis全称为:Remote Dictionary Server,该软件使用C语言编写,
    Redis是一个key-value存储系统,它支持丰富的数据类型,如:stringlistsetzset(sorted set)、hash
    Redis特点:
    Redis以内存作为数据存储介质,所以读写数据的效率极高,远远超过数据库。
    Redis应用场景:
    因为Redis交换数据快,所以在服务器中常用来存储一些需要频繁调取的数据,这样可以大大节省系统直接读取磁盘来获得数据的I/O开销,更重要的是可以极大提升速度。
    将这种热点数据存到Redis(内存)中,要用的时候,直接从内存取,极大的提高了速度和节约了服务器的开销。

进入redis

redis-cli --raw

redis五种数据类型、及操作 (针对key) ,value都是字符串

  • string 字符串

  • list 列表

  • hash 哈希

  • set 集合

  • sorted sets 有序集合

string

  1. #设置
    set key value       例子:set test "Just do a test!"
    # 获取
    get key             例子:get test
    # key是唯一的,不能用同一个key 不然就会覆盖

查看过期时间

  1. # -1 表示永久     -2 表示 不存在
    ttl key             例子:ttl test

设置过期时间

  1. # 给已经存在 key,设置过期时间
    expire key seconds   例子:expire test 12

    # 设置 key的同时,设置过期时间
    set key value ex seconds 例子:set test1 "ABC" ex 8

追加

  1. # 给已有的value,再添加新的值
    append key value           例子:append test1 "123"

设置 / 获取 多个

  1. #设置多个 string
    mset key value key value..     例子:mset a1 "AAA111" b2 "BBBA222"

    #获取多个 string
    mget key key key ...       例子:mget a1 b2

key 操作 (针对所有的 key)

  1. # 查看所有的key
    keys *           例子: keys *

    # 删除
    del key   例子:del b1
  2.  
  3. # 查看key是否存在 ,存在返回 1, 不存在返回 0
    exists key     例子: exists b1

    # 查看key类型
    type key           例子:type a1
运算
  1. set num 1    # 自动识别,字符串里面的 整数 例子:
    # +1
    incr key       (incr num)   例子:set c3 12345
                                      incr c3
    # -1
    decr key       (decr num)   例子:decr c3

    # +整数
    incrby key increment             (incrby num 50) 例子:incrby c3 6

    # -整数
    decrby key increment             (decrby num 50)   例子:decrby c3 6

list

  • 设置

    1. # lpush 左添加 (栈), 后面来的 放第一个
      lpush key value     例子: lpush l1 "abc"

      #rpush 右添加   (队列) 后面来的 放最后一个
      rpush key value     例子: rpush l1 "123"
  • 查看

    1. # lrange key start stop 例子: lrange l1 0 -1
      查看所有
      lrange key 0 -1
  • 获得list的元素个数

    1. # llen key         例子:llen l1
  • 查看位于lidex 位置上的元素

    1. # lindex key index   例子:lindex l1 0
  • 删除

    • lpop 删除左边第一个 (第一个)

      1. #rpush test2 d a b c u w y a b c y a b t c w t
        lpop key       例子:lpop test2
  • rpop 删除右边第一个 (最后个)

    1. rpop key       例子:rpop test2
  • lrem 删除指定value 及 数量

    1. rpush test_list a b c w a b c a b c w
      # lrem key count value   例子:

      #count > 0 从左往右 删除数量为count的value   (从上往下)
      : lrem test_list 2 a   例子:lrem test 1 c

      #count = 0 删除所有的 value
      : lrem test_list 0 a   例子:lrem test2 0 c

      #count < 0 从右往左 删除数量为count的value   (从下往上)
      : lrem test_list -1 b   例子:lrange test2 -1 a

hash (类似与字典)

  • 设置

    1. # hset key field value   例子:hset user name xlong
      user = { name:jianeng}
      hset user name jianeng
  • 获取

    1. # hget key field     例子:hget user name
  • 删除

    1. # hdel key field     例子:hdel user name
  • 设置多个

    1. #hmset key field value [field value]   例子:hmset user1 name xlong age 26 sex nan
      user{name:jianeng , age:18, sex:male }
      hmset user name jianeng age 18 sex male
  • 获取多个

    1. # hmget key field field   例子:hget user1 name age sex

  • 获取全部field value (类似与字典里的 items)

    1. # hgetall key     例子:hgetall user1

      hgetall user

  • 获取所有的field (类似与字典里的 keys)

    1. # hkeys key   例子:hkeys user1

  • 获取所有的value (类似与字典里的 values)

    1. # hvals key   例子:hvals user1

  • 获取field的个数

    1. # hlen key     例子:hlen user1

set(集合)

  • 设置

    1. # sadd key value [value]   (唯一,无序)   例子:sadd tests1 q w e 1 2 3
                                                      sadd tests2 w w w w 6 6 6 6(最终只有w 6)
  • 获取

    1. # smembers key   例子:smembers tests1
  • 删除

    • srem指定删除

      1. # srem key member       例子:srem tests1 2
    • spop随机删除

      1. # spop key           例子:spop tests1
  • 移动一个集合的值到另一个集合

    1. # smove oldkey newkey member   例子:smove tests1 tests2 3
  • 判断集合存在某个值

    1. # sismember key value             例子:sismember tests2 w
  • 交集

    1. # sinter key1 key2 ..           例子:sinter tests1 tests2

    把 key1 key2的交集合并到newkey

    1. # sinterstore newkey key1 key2         例子:sinterstore tests3 tests1 tests2
  • 并集

    1. # sunion key1 key2 ...         例子:sunion tests1 tests2

    把 key1 key2的并集合并到newkey

    1. # sunionstore newkey key1 key2         例子:sunionstore tests4 tests1 tests2
  • 差集

    1. # sdiff key1 key2         例子:sdiff tests1 tests2

    把 key1 key2的差集合并到newkey

    1. # sdiffstore newkey key1 key2       例子:sdiffstore tests5 tests1 tests2
  • 获取集合个数

    1. # scard key     例子:scard tests5
  • 随机返回一个

    1. # srandmember key       例子:srandmember tests4

zset(有序集合)

  • 设置

    1. # zadd key score member         例子: zadd testz1 1 a1a2a3
        zadd testz2 2 b1b2b3
        zadd testz3 3 c1c2c3

      zadd my_zset 1 'one'
      zadd my_zset 2 'two'
      zadd my_zset 3 'three'
      zadd my_zset 4 'four'
      zadd my_zset 5 'five'
  • 获取

    • zrange正序

      1. #zrange key start stop   (withscores)     例子:zrange testz1 0 -1
        zrange my_zset 0 -1  
    • zrevrange倒序

      1. #zrevrange key start stop         例子:zrevrange testz2 0 -1
        zrevrange my_zset 0 -1
  • 删除

    1. #zrem key member           例子:zrem testz1 a1a2a3
      zrem my_zset two
  • 索引

    • zrank正序

      1. # zrank key member           例子:zrank testz2 b1b2b3

        zrank my_zset three
    • zrevrank反序

      1. # zrevrank key member         例子:zrevrank testz2 b1b2b3

        zrevrank my_zset three
  • zscore : 查看score值

    1. # zscore key member         例子:zscore testz2 b1b2b3

      zscore my_zset2 a

  • zincrby : 修改score值

    1. # zincrby key score member         例子:zincrby testz2 2 b1b2b3
  • zcard 查看有序集合元素数

    1. # zcard key             例子:zcard testz2

      zcard my_zset

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

    1. #返回了 score 在 2~3 区间的元素         例子:zrangebyscore testz2 21 23
      zrangebyscore my_zset 2 3 withscores
  • zcount 返回集合中 score 在给定区间的数量

    1. # zcount key min max             例子:zcount testz2 21 23

      zcount my_zset 2 3
  • zremrangebyrank : 删除集合中排名在给定区间的元素

    1. # zrange my_zset 0 -1 withscores       例子:zremrangebyrank testz2 21 23
      zremrangebyrank my_zset 1 3
  • zremrangebyscore : 删除集合中 score 在给定区间的元素

    1. # zrange my_zset 0 -1 withscores           例子:zremrangebyscore testz1 0 2
      zremrangebyscore my_zset 1 2

Redis发布和订阅

  1. #发布
  2. publish 频道 消息 例子:publish qq1 "qq.com"
  3.  
  4. # 订阅
  5. subscribe 频道 例子:subscribe qq1 "hello"

reids 基本操作的更多相关文章

  1. Reids入门介绍

    一.入门概述 1.是什么? Redis:REmote DIctionary Server(远程字典服务器) 是完全开源免费的,用C语言编写的,遵守BSD协议,是一个高性能的(key/value)分布式 ...

  2. Key/Value之王Memcached初探:二、Memcached在.Net中的基本操作

    一.Memcached ClientLib For .Net 首先,不得不说,许多语言都实现了连接Memcached的客户端,其中以Perl.PHP为主. 仅仅memcached网站上列出的语言就有: ...

  3. Android Notification 详解(一)——基本操作

    Android Notification 详解(一)--基本操作 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Notification 文中如有纰 ...

  4. Android Notification 详解——基本操作

    Android Notification 详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 前几天项目中有用到 Android 通知相关的内容,索性把 Android Notificatio ...

  5. 三、Redis基本操作——List

    小喵的唠叨话:前面我们介绍了Redis的string的数据结构的原理和操作.当时我们提到Redis的键值对不仅仅是字符串.而这次我们就要介绍Redis的第二个数据结构了,List(链表).由于List ...

  6. 二、Redis基本操作——String(实战篇)

    小喵万万没想到,上一篇博客,居然已经被阅读600次了!!!让小喵感觉压力颇大.万一有写错的地方,岂不是会误导很多筒子们.所以,恳请大家,如果看到小喵的博客有什么不对的地方,请尽快指正!谢谢! 小喵的唠 ...

  7. 一、Redis基本操作——String(原理篇)

    小喵的唠叨话:最近京东图书大减价,小喵手痒了就买了本<Redis设计与实现>[1]来看看.这里权当小喵看书的笔记啦.这一系列的模式,主要是先介绍Redis的实现原理(可能很大一部分会直接照 ...

  8. Linq查询基本操作

    摘要:本文介绍Linq查询基本操作(查询关键字) - from 子句 - where 子句 - select子句 - group 子句 - into 子句 - orderby 子句 - join 子句 ...

  9. C++ map的基本操作和使用

    原文地址:http://blog.sina.com.cn/s/blog_61533c9b0100fa7w.html Map是c++的一个标准容器,她提供了很好一对一的关系,在一些程序中建立一个map可 ...

随机推荐

  1. cnblogs博客申请完毕,以后再这里安家落户

    cnblogs博客申请完毕,以后再这里安家落户,之前的博客就不转载了,好好搞技术,安稳过日子.

  2. SVG:中国地图

    中国地图 <svg height="578" version="1.1" width="718" xmlns="http:/ ...

  3. records.config中文详解

    转载:http://www.safecdn.cn/cdn/2018/12/records-config-zh/106.html records.config参数的一些备注 CONFIG proxy.c ...

  4. Maven父工程

    1.创建Maven工程时 Packaging 选项为 pom 2.父工程目录结构只有pom.xml(父工程不进行编码) 3.需要的依赖信息在父工程中定义,子模块继承 5.将各个子模块聚合到一起 6.将 ...

  5. 关于 roadhog 2.0 版本之后不支持 cssModulesExclude

    cssModulesExclude 是用于 cssModules模块之后 ,解决不需要 cssModules 模块的样式文件, 了解 cssModules 看这里 https://segmentfau ...

  6. 20165304《Java程序设计》第七周学习总结

    教材学习内容总结 第11章 JDBC与MySQL数据库 MySQL数据库管理系统 MySQL数据库管理系统,简称MySQL,是世界上最流行的开源数据库管理系统,其社区版(MySQL Community ...

  7. centos-yum离线源

    配置离线源 在个别开发环境中,我们可能有限制不能连外网. 这个情况可以通过用一台同内网的机器配置离线源,然后通过vsftp公用. 安装ftp rpm命令详解 $ rpm -ivh apache-1.3 ...

  8. nodejs 解决跨域

    1.失败 app.all('*', function (req, res, next) { res.header("Access-Control-Allow-Origin", &q ...

  9. delphi dxBarManager 的dxBarEdit 输入问题

    Developer Express 6 想做像office2007那样界面. 问题:dxBarManager1 里面添加了cxBarEditItem1 这是个文本框,运行可以输入内容,但是当焦点失去时 ...

  10. Java IO流学习总结五:转换流-InputStreamReader、OutputStreamWriter

    类的继承关系 Reader |__ BufferedReader.StringReader.InputStreamReader |__ FileReader Writer |__ BufferedWr ...