• Redis学习笔记


    Redis官网

    https://redis.io/

    Redis中国官方站

    http://www.redis.cn/

    Redis简介

    开源(开发语言ANSI C)的内存中数据结构存储系统,用途:数据库、缓存和消息中间件。

    Redis windows安装使用

    关于下载:redis.io官网上只提供linux版本,windows需要github上下载,微软fork的一份有提供windows编译的安装包,地址:https://github.com/MicrosoftArchive/redis/tags

    下载后解压,运行命令可以一次性启动redis server:redis-server redis.windows.conf

    使用redis client连接server:ping 返回pong

    redis注册为windows服务(留在以后再补充)

    redis支持多种数据结构

    Redis Key值是二进制安全的,这意味着可以用任何二进制序列作为key值,从字符串到JPEG图片都可以。空字符串也是有效key值。

    开始之前有三条规则,这三条规则适用于所有的数据类型

    1. 当我们向一个聚合数据类型中添加元素时,如果目标键不存在,就在添加元素前创建空的聚合数据类型。(string不是聚合类型)
    2. 当我们从聚合数据类型中移除元素时,如果值仍然是空的,键自动被销毁。
    3. 对一个空的 key 调用一个只读的命令,比如 LLEN (返回 list 的长度),或者一个删除元素的命令,将总是产生同样的结果。该结果和对一个空的聚合类型做同个操作的结果是一样的。

    (1)字符串(strings)

    set mykey value

    get mykey

    set counter 100

    incr counter #incr是原子操作,会尝试转换成整形后再加1。

    incrby counter 50 #原子操作

    decr counter #原子操作

    decrby counter 50 #原子操作

    getset key value #应该不常用,设置新值,获得旧值,如果key不存在则返回nil。如果类型不匹配则返回错误。

    mset a 10 b 20 c 30 #一次存储多个key对应的值

    mget a b c #一次获取多个keyi对应的值,返回的值是个数组

    (2)列表(lists)

    redis的list是有序元素的序列,采用linked-list数据结构存储,因此在list头部或尾部添加一个元素时间复杂度都是0(N),

    rpush list a #

    lpush list a #

    lrange list index1 index2 #用于取出index1和index2之间的值序列,-1表示最后一个元素,-2表示倒数第二个元素,0表示最左边的元素,1表示左边第二个元素

    rpop list # 删除右侧最后一个元素,并返回删除的元素值,如果序列长度为0则返回nil

    lpop list #删除左侧最后一个元素,并返回删除的元素值,如果序列长度为0则返回nil

    ltrim list index1 index2 #从左侧index1位置开始到index2位置结束进行截取,其余删除,无rtrim

    brpop list timeout # 阻塞返回,如果超时时间内有值则返回,如果超过超时时间没值则返回nil,如果有很多阻塞pop则排队。

    blpop list timeout #  阻塞返回,如果超时时间内有值则返回,如果超过超时时间没值则返回nil,如果有很多阻塞pop则排队。

    llen list #返回列表长度

    (3)散列(hashes)

    hset key field value # field没限制,主要看内存

    hget key filed #

    hmset key field value [field value ...] #

    hmget key field [field ...] #

    hgetall key #

    hincr key field #不存在,只存在hincrby指令

    hincrby key field increment# 

    hdel key field [field ...] #

    hexists key field #

    hkeys key # 得到所有域

    hlen #得到域的个数

    hstrlen key field #返回域值字符串的长度

    hvals key #返回所有域对应的值

    hscan  key cursor [MATCH pattern] [COUNT count] # 跟scan类似

    (4)集合(sets)无序

    sadd key [member ...] # 添加元素,如果元素存在则加入失败

    spop key # 删除元素,并返回

    srem key member [member ...] # 删除元素,返回个数

    smove source destination member # 把member元素从source移到destination

    smembers key # 返回元素,但是顺序不保证

    scard key #集合元素个数

    sismember key member # 1存在,0不存在

     sinter key [key ...] #【交集】取交集

    sinterstore destination [key ...] # 【交集】

    sunion key [key ...] #【并集】取并集,并把元素以列表显示出来

    sunionstore destination key [key ...] #【并集】 把并集复制给destination,如果只有一个集合,那么就是复制功能

    sdiff key [key ...] #【差集】

    sdiffstore destination [key ...] # 【差集】

     srandmember key [count] # (1)只有key参数,则随机返回一个member,仅返回一个随机member并不删除(2)key 和 一个正整数,则随机返回count个不同的member,如果count大于集合元素个数,则返回所有元素(3)key和一个负整数,如果负整数绝对值小于元素个数,则返回不重复的数,如果大于元素个数,则随机返回重复的数。个数保持负整数绝对值

    sscan key cursor [MATCH pattern] [COUNT count] #

     

    (5)有序集合(sorted sets)

    (6)其他

    bitmaps/hyperloglogs/geospatial

    (7)一些很重要的命令

    keys pattern #pattern可以支持通配符 * ? 

    exists key #返回1表示key存在,返回0表示不存在

    del key #返回1表示key存在且已经被删除,返回0表示key不存在

    type key #返回key对应值的存储类型,none表示key不存在

    expire key number #设置超时时间number秒,ttl可以看倒计时时间,也可以在set时设置, ex seconds ,px 毫秒

    scan cursor [MATCH pattern] [COUNT count] # 通过迭代的方式取得所有的key,以scan 0开始,返回的值分为两部分,第一部分为下次迭代的游标,第二部分为返回的key列表,接下来scan 接返回的游标,如果游标为0则已经返回了所有,如果非0一直持续下去直到得到0为值,此工具是为了应对keys和smembers返回时间较长的场景而准备的。 match参数可以过滤返回值,可以用*和?,count为返回值的数量,一般是大于这个值

    redis重要特性

    redis事务

     

    redis备份 -save

    redis还原 把dump.rdb放到redis目录,启动redis server即可

    redis安全 -设置密码 config set requirepass "password"

        -auth "password"

     windows下如何设置密码

    redis.windows-service.conf中添加requirepass password

  • 相关阅读:
    iOS开发——iOS10升级极光推送SDK、友盟分享SDK
    iOS动画——弹窗动画(pop动画)
    iOS动画——文字晃动
    iOS安全——代码混淆&反编译
    iOS学习——iOS视频和推荐网站
    iOS开发——消息推送跳转
    iOS开发——时间格式类
    iOS开发——锁屏监听
    iOS开发——毛玻璃透明
    iMAC——全新重装Mac系统
  • 原文地址:https://www.cnblogs.com/yaochc/p/8546843.html
Copyright © 2020-2023  润新知