• Redis高级运维必备


    Redis知识点总结

    01.Redis知识点一:redis特点以及安装使用

    Redis特点介绍

    REmote DIctionaryServer(Redis)是一个由SalvatoreSanfilippo写的key-value存储系统。Redis提供一些丰富的数据结构,包括lists,sets,ordered sets以及hashes,还有和Memcached一样的strings结构。Redis当然还包括了对这些数据结构的丰富操作。
    1:数据结构丰富
    2:持久化
    3:支持简单事务
    4:主从配置方便。

    Redis可以用来做存储(storge)而menccathed是用来做缓存(cache)这个特点主要是因为其有持久化的功能。存储的数据有结构对于memcached来说,存储的数据,只有一种类型--字符串,而redis则可以存储字符串,链表,哈希结构,集合,有序集合。

    Redis的下载安装

    1.官方站点:redis.io 下载最新版或者最新stable版。
    2.解压源码并进入目录
    3.不用configure(redis本身自带coonfigure)
    4.直接make(make是检查一下你缺少什么库,如果是32为机器 make为32bit)
    注意碰到的问题:时间错误。.

    02.Redis知识点二:redis通用key操作命令

    通用键值操作

    Redis对于key的操作命令:

    01.keys pattern:查询想要的key

    在redis里,允许模糊查询key
    *:通配任意给字符, *这里的代表0或者多个
    ?:通配单个字符

    []:通配括号内的某1个字符

    redis 127.0.0.1:6379> key *
    1)"age"
    2)"site"
    redis 127.0.0.1:6379>keys site
    1)"site"
    redis 127.0.0.1:6379>keys s*
    1)"site"
    redis 127.0.0.1:6379>keys site*
    1)"site"
    
    02.del key1 key2.....keyn 作用:删除1个或多个键:返回值:不存在的key忽略掉,返回真正删除的key的数量
    redis 127.0.0.1:6379>
    
    03.randomkey:随机选则key
    redis 127.0.0.1:6379> randomkey
    "age"
    redis 127.0.0.1:6379>randomkey
    "site"
    
    04.type key:返回key存储的值的类型,有string,link,set,order set,hash
    redis 127.0.0.1:6379> type age
    string
    redis 127.0.0.1:6379>type site
    string
    
    05.exists key:判断key是否存在。返回1/0
    redis 127.0.0.1:6379> exists age
    (integer)1
    redis 127.0.0.1:6379> exists site
    (integer)1
    
    06.del key1 key2....keyn 作用:删除1个或多个键 返回值:不存在的key 忽略掉,返回真正删除的key的数量。
    redis 127.0.0.1:6379> del age
    (integer)1
    redis 127.0.0.1:6379> keys *
    1)"site"
    redis 127.0.0.1:6379>exists age
    (integer)0
    
    07.rename key newkey 作用:给key赋一个新的key名 注:如果newkey已存在,则newkey的原值被覆盖 如果新key不存在,这里就做改名的动作。如果已经存在就不改了,不然就和别的key发生冲突了。
    redis 127.0.0.1:6379>rename site wangzhi
    ok
    redis 127.0.0.1:6379>exists site
    (integer)0
    redis 127.0.0.1:6379>keys *
    1)"wangzhi"
    redis 127.0.0.1:6379>get wangzhi
    "www.zixue.it"
    
    08.renamenx key newkey:作用:把key改名为newkey 返回:发生修改返回1 未发生修改返回0

    如果search不存在,你则改成功。如果存在你就不改

    redis 127.0.0.1:6379> set site www.zixue.it
    OK
    redis 127.0.0.1:6379> set search ww.so.com
    OK
    redis 127.0.0.1:6379> rename site sea
    这里site改为了search,原本的search如何了?改了之后和原来的重名,原来的search就覆盖了
    (integer)1
    redis 127.0.0.1:6379> get sea
    "www.zixue.it"
    redis 127.0.0.1:6379> renamenx sea search
    (integer)0
    redis 127.0.0.1:6379> get search
    "www.zixue.it"
    redis 127.0.0.1:6379> keys *
    1)"search"
    2)"sea"
    
    09.move key db:移动一个key redis是用来存储用的,它不仅仅是用来缓存用的。给我们设定了多个服务器。默认给我们开启了databases:16个数据库分别是从0到15,默认是从0号数据库中开始操作数据的。
    root@localhost redis># vim redis.conf
    redis 127.0.0.1:6379> keys *
    1)"search"
    2)"sea"
    redis 127.0.0.1:6379> select 1
    OK
    redis 127.0.0.1:6379[1]> keys *
    (empty list or set):没有一个key?
    为什么?之前还有两个key,因为这里是来得了1号服务器。默认状态是走到0号服务器。
    redis 127.0.0.1:6379[1]> select 0
    OK
    redis 127.0.0.1:6379> keys *
    1)"search"
    2)"sea"
    
    将0号数据库的key移动到1号数据库里面
    redis 127.0.0.1:6379>move sea 1
    (integer)1
    redis 127.0.0.1:6379>keys *
    1)"search"
    redis 127.0.0.1:6379>select 1
    OK
    redis 127.0.0.1:6379[1]>keys *
    1)"sea"
    redis 127.0.0.1:6379[1]>
    
    在redis里面,默认是没有有效期的。为什么没有有效期?因为redis它需要做的是存储,而非缓存。但是如果就要当作缓存来用该如何?就要设一个有效期该如何
    10.expire key 整型值 作用:设置key的声明周期一秒为单位
    redis 127.0.0.1:6379[1]> select 0
    OK
    redis 127.0.0.1:6379>keys *
    1)"search"
    查看它还能活多久
    redis 127.0.0.1:6379> ttl search
    (interger) -1(-1代表永久有效,它不自动生效)
    redis 127.0.0.1:6379>
    
    11.ttl key:查询有效期 作用:查询key的生命周期 返回:秒数(以秒数为单位的生命) 注意:对于不存在的key或已过期的key。都返回-1 在Redis 2.8中,对于不存在的key返回-2
    redis 127.0.0.1:6379> ttl search
    (integer)-1
    redis 127.0.0.1:6379> expire search 10
    (integer)1
    redis 127.0.0.1:6379> get search
    "www.so.com"
    redis 127.0.0.1:6379> get search
    "www.so.com"
    redis 127.0.0.1:6379> get search
    "www.so.com"
    redis 127.0.0.1:6379> get search
    "www.so.com"
    redis 127.0.0.1:6379> get search
    "www.so.com"
    redis 127.0.0.1:6379> get search
    "www.so.com"
    redis 127.0.0.1:6379> get search
    "www.so.com"
    redis 127.0.0.1:6379> get search
    (nil)  这里已经给它设置10秒了,它已经不存在了。
    
    redis 127.0.0.1:6379> expire search 10
    (integer)1
    redis 127.0.0.1:6379> ttl search
    (integer)7
    redis 127.0.0.1:6379> ttl search
    (integer)6
    redis 127.0.0.1:6379> ttl search
    (integer)5
    redis 127.0.0.1:6379> ttl search
    (integer)4
    redis 127.0.0.1:6379> ttl search
    (integer)3
    redis 127.0.0.1:6379> ttl search
    (integer)2
    redis 127.0.0.1:6379> ttl search
    (integer)1
    redis 127.0.0.1:6379> ttl search
    (integer)0
    redis 127.0.0.1:6379> ttl search
    (integer)-1
    redis 127.0.0.1:6379> ttl search
    (integer)-1
    
    pexpire key 毫秒数,设置生命周期数 pttl key,以毫秒返回生命周期
    redis 127.0.0.1:6379>set search www.zixue.it
    OK
    redis 127.0.0.1:6379>pexpire search 9000
    (integer)1
    redis 127.0.0.1:6379>pttl search
    (integer)5207
    redis 127.0.0.1:6379>pttl search
    (integer)3343
    redis 127.0.0.1:6379>pttl search
    (integer)1853
    redis 127.0.0.1:6379>pttl search
    (integer)837
    redis 127.0.0.1:6379>pttl search
    (integer)-1
    redis 127.0.0.1:6379>
    

    把这个key设置为永久有效

    redis 127.0.0.1:6379> set site www.zixue.it
    OK
    redis 127.0.0.1:6379> expire site 10 将它的生命周期设置为10秒
    (integer)1
    redis 127.0.0.1:6379> ttl site
    (integer)7
    redis 127.0.0.1:6379> ttl site
    (integer)6
    redis 127.0.0.1:6379> persist site  //把这个key设置为永久有效
    (integer)1
    redis 127.0.0.1:6379> ttl site
    (integer)-1
    redis 127.0.0.1:6379> get site
    "www.zixue.it"  //这里就的set还存在
    redis 127.0.0.1:6379>
    

    03.Redis知识点三:string结构及命令详解

    Redis字符串类型的操作

    01.set key value[ex 生命周期 秒数]/[px 毫秒数][nx]/[xx] ex:可以让生命周期在设置之初就有一个生命周期
    redis 127.0.0.1.6379> flushdb  窜穿一下db
    OK
    redis 127.0.0.1.6379> keys *
     (empty list or set)
    redis 127.0.0.1.6379>set site www.zixue.it
    OK
    redis 127.0.0.1.6379> ttl search
    (integer) -1
    redis 127.0.0.1.6379> ttl search
    (integer) -1
    redis 127.0.0.1.6379>get search
    (nil)
    redis 127.0.0.1.6379> set search www.baidu.com ex 10px 1567
    ok
    redis 127.0.0.1.6379> get search
    (nil)
    redis 127.0.0.1.6379> set search www.baidu.com ex 10 px 6567
    OK
    redis 127.0.0.1.6379> get search
    "www.baidu.com"
    redis 127.0.0.1.6379> ttl search
    	(integer)1
    redis 127.0.0.1.6379> set search www.baidu.com ex 10 px 6567
    OK
    redis 127.0.0.1.6379> pttl search
    (integer)2528
    redis 127.0.0.1.6379> flushdb
    OK
    redis 127.0.0.1.6379> set site www.so.com
    OK
    redis 127.0.0.1.6379>set site www.baidu.com nx  //这里如果不加则直接改成什么数加nx  的意思是site不存在的时候再做子操作,要是存在就不能发挥作用
    (nil)
    redis 127.0.0.1.6379> get site
    "www.so.com"
    redis 127.0.0.1.6379> set site www.google.com xx
    OK
    redis 127.0.0.1.6379> get site
    "www.goole.com"
    redis 127.0.0.1.6379>  set  abc www.google.com.xx
    (nil)
    
    02.mset multil set,一次性设置多个键值
    mset multil set,一次性设置多个键值
    例:mset key v1 key2 v2....
    redis 127.0.0.1.6379>mset a aman bbold c comtroller d diamond
    OK
    redis 127.0.0.1.6379>keys *
    1)"a"
    2)"d"
    3)"b"
    4)"c"
    5)"site"
    redis 127.0.0.1.6379> get a 
    "aman"
    redis 127.0.0.1.6379> get b 
    "bold"
    一次get多个键值
    redis 127.0.0.1.6379> mget a b c
    1) "aman"
    2) "bold"
    3) "comtroller"
    redis 127.0.0.1.6379>
    
    03.get key 作用 获取key的值
    04.mget key1 key2 ...keyn 作用获取多个key的值
    
    
    05.setrange key offset value 作用把字符串的offset偏移字节改成value 注意:如果偏移量> 字符长度,该字符自动补0x00
    redis 127.0.0.1:6379> flushdb  //先清一下
    OK
    redis 127.0.0.1:6379>set word helllo
    OK
    redis 127.0.0.1:6379>get word
    "hello"
    redis 127.0.0.1:6379>setrange word 2 ??  //设置范围,从那里开始偏移
    (integer)5
    redis 127.0.0.1:6379>get word
    "he??o"
    redis 127.0.0.1:6379>set word hell
    OK
    redis 127.0.0.1:6379>setrange word 6 !
    (integer)7
    redis 127.0.0.1:6379>get word
    "hellox00!"
    
    06.append key value 往字符串的尾巴处追加 作用:把value追加到key的原值上
    redis 127.0.0.1:6379>append word @@
    (integer)9
    redis 127.0.0.1:6379>get word
    "hello x00!@@"
    
    07.getrange key start stop: 获取他的一小部分的 作用:是获取字符串中[start,stop]范围的值 注意:对于字符串的下标,左数从0开始,右数从-1开始

    注意:
    1:start>=length,则返回空字符串
    2:stop>=length,则截取至字符结尾
    3:如果start 所处位置在stop右边,返回空字符串

    redis 127.0.0.1:6379>set area chinese
    OK
    redis 127.0.0.1:6379>getrange area 1 4
    "hine"
    redis 127.0.0.1:6379>set statis working
    OK
    redis 127.0.0.1:6379>getrange status 0 -3
    "worki"
    redis 127.0.0.1:6379>getrange status 0 -4
    "work"
    redis 127.0.0.1:6379>getrange status 6 3
    ""
    redis 127.0.0.1:6379>set status sleep
    OK
    redis 127.0.0.1:6379>getset status wakeup
    "sleep"
    redis 127.0.0.1:6379>get status
    "wakeup"
    redis 127.0.0.1:6379>getset status working
    "wakeup"
    redis 127.0.0.1:6379>set age 29
    OK
    redis 127.0.0.1:6379>get age 
    "29"
    redis 127.0.0.1:6379>incr age
    (integer)30
    redis 127.0.0.1:6379>decr age
    (integer)29
    redis 127.0.0.1:6379>set num 100000
    OK
    redis 127.0.0.1:6379>decr num
    (integer) 99999
    redis 127.0.0.1:6379>incrby age 5
    (integer)34
    redis 127.0.0.1:6379>incrby age 5
    (integer)39
    redis 127.0.0.1:6379>decrby age 10
    (integer)29
    
    08.incrby key number :
    redis 127.0.0.1:6379>incrby age 90  (integer)92
    
    把它当成一个浮点数来增加
    09.incrbyfloat key floatnumber:
    redis 127.0.0.1:6379>incrbyfloat age 3.5  "95.5"
    redis 127.0.0.1:6379>incrbyfloat age 0.5
    29.5
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    decr key  redis 127.0.0.1:6379>set age 20
    decrby key number 
    getbit key offset
    
    10.setbit key offset value

    设置offset对应二进值位上的值
    返回:该位上的旧值
    注意:
    1:如果offset过大,则会在中间填充0.
    2:offset最大大到多少,这里关联到value最多能有多长
    在位上做操作
    给定字母,可能是A-Z,但具体是谁,不知道,如何把他们变成小写

    redis 127.0.0.1:6379>setbit char 2 1
    (integer)0
    redis 127.0.0.1:6379>get char
    "a"
    redis 127.0.0.1:6379>set char B
    OK
    redis 127.0.0.1:6379>setbit char 2 1
    (integer)0
    redis 127.0.0.1:6379>get char
    "b"
    小写变成大写,这里是从位的角度来做操作
    redis 127.0.0.1:6379> setbit char 2 0
    (integer)1
    redis 127.0.0.1:6379>get char
    "B"
    这里最大能搞多少呢?调max offset N(N+1)/8个字节,最大的字符的值是多大?
    redis 127.0.0.1:6379>setbit char 4394967296 1
    (error)ERR bit offset is not an integer or out of range
    redis 127.0.0.1:6379>setbit char 4394967295 1  最大值是2的32次方个字节减1除以8剩下2的29次方可以推算出最大的key值是512M
    (integer)0
    (1.72s)
    
    
    11.bitop operation destkey key1[key2...]:让两个key来做相应的位上的AND操作 对于key1,key2,keyN作operation并将结果保存到destkey上. operation可以是AND|OR NOT XOR
    redis 127.0.0.1:6379>flushdb
    OK
    redis 127.0.0.1:6379>setbit upper 2 1
    (integer)0
    redis 127.0.0.1:6379>get upper
    " " 
    redis 127.0.0.1:6379>setbit lower 2 1  谁和它或谁变成小写
    (integer)0
    redis 127.0.0.1:6379>set char Q
    OK
    redis 127.0.0.1:6379>  bitop or char char lower 让他们两者做位上的操作
    (integer)1
    redis 127.0.0.1:6379> get char
    "q"
    

    04.Redis知识点四:list结构及命令详解

    link链表结构:若干元素各自是各自的独立成体系,这里有一个指针指向下一个元素的

    01.Ipush key value:作用把值插入到链表头部
    redis 127.0.0.1:6379>flushdb  清一下所有的数据
    OK
    redis 127.0.0.1:6379>keys *
    (empty list or set) //没有数据
    redis 127.0.0.1:6379>lpush character a
    (integer)1
    redis 127.0.0.1:6379>lpush character b
    (integer)2
    redis 127.0.0.1:6379>lpush character c
    (integer)3
    redis 127.0.0.1:6379>lrange character 1 2
    1)"a"
    2)"b"
    redis 127.0.0.1:6379>lrange character 1 3
    1)"a"
    2)"b"
    3)"c"
    redis 127.0.0.1:6379>lrange character 0 3
    1)"0"
    2)"a"
    3)"b"
    4)"c"
    不管这个链表有多少元素,则立即可以看到它所有元素
    redis 127.0.0.1:6379>lrange character 0 -1
    1)"0"
    2)"a"
    3)"b"
    4)"c"
    
    02.rpop key:作用:返回并删除链表尾元素
    03.rpush lpop:
    redis 127.0.0.1:6379>rpop character
    "c"
    redis 127.0.0.1:6379>lrange character 0 -1
    1)a"
    2)"b"
    redis 127.0.0.1:6379>flushdb
    OK
    redis 127.0.0.1:6379>lpush answer a b c a b d a
    (integer)7
    redis 127.0.0.1:6379>lrange character 0 -1
    1)"a"
    2)"b"
    3)"d"
    4)"a"
    5)"c"
    6)"b"
    7)"a"
    在这里先删一个b,给的是整数就从头部往尾部删
    redis 127.0.0.1:6379>lrem answer 1 b
    (integer) 1
    redis 127.0.0.1:6379>lrange anser 0 -1  再次查看所有内容
    1)"a"
    2)"d"
    3)"a"
    4)"c"
    5)"b"
    6)"a"
    从尾部开始删2个a
    redis 127.0.0.1:6379>lrem answer -2 a
    (integer) 2
    redis 127.0.0.1:6379> lrange answer 0 -1
    1)"a"
    2)"d"
    3)"c"
    4)"b"
    redis 127.0.0.1:6379>flushdb
    OK
    redis 127.0.0.1:6379>rpush a b c d e f
    (integer) 5
    redis 127.0.0.1:6379>flushdb 
    OK
    redis 127.0.0.1:6379>rpush character a b c d e f
    (integer)6
    redis 127.0.0.1:6379>lrange character 0 -1
    1)"a"
    2)"b"
    3)"c"
    4)"d"
    5)"e"
    6)"f"
    redis 127.0.0.1:6379>ltrim character 2 5
    OK
    redis 127.0.0.1:6379>lrange character 0 -1
    1)"c"
    2)"d"
    3)"e"
    4)"f"
    redis 127.0.0.1:6379>ltrim character 1 -2
    OK
    redis 127.0.0.1:6379>lrange character 0 -1
    1)"d"
    2)"e"
    redis 127.0.0.1:6379>lindex character 0
    "d"
    redis 127.0.0.1:6379>lindex character 1
    "e"
    redis 127.0.0.1:6379>lindex character 2
    (nil)
    redis 127.0.0.1:6379>llen  character
    (integer)2
    redis 127.0.0.1:6379> rpush b c d
    (integer)2
    redis 127.0.0.1:6379>llen  character
    (integer)2
    redis 127.0.0.1:6379>rpush character b c d
    (integer)5
    redis 127.0.0.1:6379>llen character
    (integer)5
    redis 127.0.0.1:6379> rpush num 1 3 6 8 9
    (integer)5
    redis 127.0.0.1:6379>linsert num before 3 2
    (integer)6
    redis 127.0.0.1:6379>lrange num 0 -1
    1)"1"
    2)"2"
    3)"3"
    4)"6"
    5)"8"
    6)"9"
    redis 127.0.0.1:6379>
    
    04.lrange key start stop:作用:返回链表中[start,stop]中的元素

    规律:左数从0开始,右数从-1开始
    lrem key count value
    作用:从key链表中删除value值
    注: 删除count的绝对值个value后介绍、Count>0 从表头删除 Count<0 从表尾删除
    Itrim key start stop:作用:剪切key对应的链接,切[start,stop]一段,并把该段重新赋值给key
    lindex key index 作用:返回index索引上的值。
    (nil)

    
    

    05.ream key count value 作用:从key链表中删除value值 注:删除count的绝对值个vaue后介绍Count>0 从表头删除 Count<0从表尾删除

    
    

    06.ltrim key start stop :作用:剪切key对应的链接,切[start,stop]一段,并把该段重新赋给key

    
    

    07.lindex key index 作用:返回lindex key 2

    
    

    08.llen key 作用:计算链接表的元素个数

    redis 127.0.0.1:6379>llen task
    (integer)3
    redis 127.0.0.1:6379>
    

    09.linsert key after|before search value 作用:在链表中寻找‘search’,并在search值之前之后,插入value 注:一旦找到一个search 后,命令就结束了,因此不会插入多个value

    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    

    10.rpoplpush source dest : 作用 :把sourse 的尾部拿出,放在dest的头部,并返回 该单元值

    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    

    11.brpop ,blpop key timeout 作用:等待弹出key的尾/头元素,Timeout为等待超时时间 如果timeout为0,则一直等待

    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    
    12.
    redis 127.0.0.1:6379>flushdb  清一下所有的数据
    OK
    redis 127.0.0.1:6379>keys *
    (empty list or set) //没有数据
    redis 127.0.0.1:6379>lpush character a
    (integer)1
    redis 127.0.0.1:6379>lpush character b
    (integer)2
    redis 127.0.0.1:6379>lpush character c
    (integer)3
    redis 127.0.0.1:6379>lrange character 1 2
    1)"a"
    2)"b"
    redis 127.0.0.1:6379>lrange character 1 3
    1)"a"
    2)"b"
    3)"c"
    redis 127.0.0.1:6379>lrange character 0 3
    1)"0"
    2)"a"
    3)"b"
    4)"c"
    不管这个链表有多少元素,则立即可以看到它所有元素
    redis 127.0.0.1:6379>lrange character 0 -1
    1)"0"
    2)"a"
    3)"b"
    4)"c"
    

    13.rpop key:作用:返回并删除链表尾元素

    rpush lpop:
    redis 127.0.0.1:6379>rpop character
    "c"
    redis 127.0.0.1:6379>lrange character 0 -1
    1)a"
    2)"b"
    redis 127.0.0.1:6379>flushdb
    OK
    redis 127.0.0.1:6379>lpush answer a b c a b d a
    (integer)7
    redis 127.0.0.1:6379>lrange character 0 -1
    1)"a"
    2)"b"
    3)"d"
    4)"a"
    5)"c"
    6)"b"
    7)"a"
    在这里先删一个b,给的是整数就从头部往尾部删
    redis 127.0.0.1:6379>lrem answer 1 b
    (integer) 1
    redis 127.0.0.1:6379>lrange anser 0 -1  再次查看所有内容
    1)"a"
    2)"d"
    3)"a"
    4)"c"
    5)"b"
    6)"a"
    从尾部开始删2个a
    redis 127.0.0.1:6379>lrem answer -2 a
    (integer) 2
    redis 127.0.0.1:6379> lrange answer 0 -1
    1)"a"
    2)"d"
    3)"c"
    4)"b"
    redis 127.0.0.1:6379>flushdb
    OK
    redis 127.0.0.1:6379>rpush a b c d e f
    (integer) 5
    redis 127.0.0.1:6379>flushdb 
    OK
    redis 127.0.0.1:6379>rpush character a b c d e f
    (integer)6
    redis 127.0.0.1:6379>lrange character 0 -1
    1)"a"
    2)"b"
    3)"c"
    4)"d"
    5)"e"
    6)"f"
    redis 127.0.0.1:6379>ltrim character 2 5
    OK
    redis 127.0.0.1:6379>lrange character 0 -1
    1)"c"
    2)"d"
    3)"e"
    4)"f"
    redis 127.0.0.1:6379>ltrim character 1 -2
    OK
    redis 127.0.0.1:6379>lrange character 0 -1
    1)"d"
    2)"e"
    redis 127.0.0.1:6379>lindex character 0
    "d"
    redis 127.0.0.1:6379>lindex character 1
    "e"
    redis 127.0.0.1:6379>lindex character 2
    (nil)
    redis 127.0.0.1:6379>llen  character
    (integer)2
    redis 127.0.0.1:6379> rpush b c d
    (integer)2
    redis 127.0.0.1:6379>llen  character
    (integer)2
    redis 127.0.0.1:6379>rpush character b c d
    (integer)5
    redis 127.0.0.1:6379>llen character
    (integer)5
    redis 127.0.0.1:6379> rpush num 1 3 6 8 9
    (integer)5
    redis 127.0.0.1:6379>linsert num before 3 2
    (integer)6
    redis 127.0.0.1:6379>lrange num 0 -1
    1)"1"
    2)"2"
    3)"3"
    4)"6"
    5)"8"
    6)"9"
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    (integer)
    redis 127.0.0.1:6379>
    (integer)
    lrange key start stop:作用:返回链表中[start,stop]中的元素
    规律:左数从0开始,右数从-1开始
    

    14.lrem key count value

    作用:从key链表中删除value值
    注: 删除count的绝对值个value后介绍、Count>0 从表头删除 Count<0 从表尾删除
    Itrim key start stop:作用:剪切key对应的链接,切[start,stop]一段,并把该段重新赋值给key
    lindex key index 作用:返回index索引上的值。
    (nil)

    
    

    05.Redis知识点五:位图法统计活跃用户

    1.国外某大型网站有10亿用户,有频繁登录的,也有不经常登录的 2,如何来记录用户的登录信息 3:如何来查询活跃用户,【如1周内 登录3次的。 每周评出:有奖活跃用户:练习7天活动 每月评,

    建一张用户表的登录表,登录时间
    uid
    logtime
    上亿用户,每天有1亿用户登录,2天2亿  3天3亿数据依此类推..
    面对这样爆发性数据增长如何处理。
    思路:这个人今天登录了没有,要么登录了要么没有登录可以用,因此可以通过信息的角度来看  1/0表示这个人今天是否有登录。
    uid 用户有7个
    第一位没有连号用户所以设置位0
    uid       1   2   3    4  5  6  7
    周一: 0   1   0   1    0  0  0  1
    周二: 0   1   1   0    0  1  1  1
    周三: 0   1   1   0
    周四
    周五
    周六
    
    redis 127.0.0.1.6379>setbit mon 0000 0000 0
    (integer)0
    redis 127.0.0.1.6379>setbit min 3 1
    (integer)0
    redis 127.0.0.1.6379>setbit mon 5 1  
    (integer)0
    redis 127.0.0.1.6379>setbit mon 7 1
    (integer)0
    redis 127.0.0.1.6379>setbit teb 0000 0000 0
    (integer)0
    redis 127.0.0.1.6379>setbit teb 3 1
    (integer)0
    redis 127.0.0.1.6379>setbit fed 5 1
    (integer)0
    redis 127.0.0.1.6379>setbit fed 8 1
    (integer)0
    redis 127.0.0.1.6379>setbit wen 3 1
    (integer)0
    redis 127.0.0.1.6379>setbit wen 6 1
    (integer)0
    redis 127.0.0.1.6379>bitop and resmin feb  wen
    (integer)12500001
    

    位图法统计活跃用户有以下优点: 1节约空间,1亿用户bit约10M的字符就能表示 2计算方便

    06.Redis知识点六:set结构及命令详解

    集合的性质:唯一性,无序性,确定性

    注意:在string和link的命令中,可以通过range来访问string中的某几个字符或某几个元素,但是因为集合的无序性,无法通过下标或范围来访问部分元素,因此想看元素,要么随机选一个,要么全选。

    01.sadd key value1 value2 作用:往key中增加元素

    redis 127.0.0.1:6379>sadd gender(给集合取一个名称) male female
    (integer)2//给集合增加元素成功了2个元素
    redis 127.0.0.1:6379>sadd gender yao yao 
    (integer)1  //集合具有唯一性
    redis 127.0.0.1:6379>sadd gender yao
    (integer)0  //yao 这个元素已经存在了所以为0
    redis 127.0.0.1:6379> 
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    

    02.srem value value1 value2 作用:删除集合中集为value1 value2的元素 返回值:忽略不存在的元素后,真正删除掉的元素的个数

    redis 127.0.0.1:6379>srem gender yao
    (integer)1
    redis 127.0.0.1:6379>smembers gender
    1)"female"
    2)"male"
    redis 127.0.0.1:6379>srem genders x c
    (integer)0  //没有的值,它删除不了
    redis 127.0.0.1:6379>srem gender male x c
    (integer)1  //没有的值它删除不了,它只能删除有的值
    
    

    03.spop key 作用:返回并删除集合中key中的1个随机元素 随机体系了无序性

    redis 127.0.0.1:6379>sadd gender a b c d e f //添加一些元素
    (integer)6
    redis 127.0.0.1:6379>smembers gender  //查看gender的所有元素
    1)"e"
    2)"a"
    3)"d"
    4)"female"
    5)"b"
    6)"c"
    7)"f"
    redis 127.0.0.1:6379>spop gender
    "d"
    redis 127.0.0.1:6379>smembers gender
    1)"e"
    2)"a"
    3)"female"
    4)"b"
    5)"c"
    6)"f"
    redis 127.0.0.1:6379>spop gender
    "b"
    redis 127.0.0.1:6379>spop gender
    "e"
    redis 127.0.0.1:6379>spop gender
    "a"
    redis 127.0.0.1:6379>spop gender
    "c"
    redis 127.0.0.1:6379>spop gender
    "f"
    

    04. srandmember key 作用:返回集合key中,随机的1个元素。

    //随机抛出,而又不把它删除掉
    redis 127.0.0.1:6379> sadd gender a b c d e
    (integer)5
    redis 127.0.0.1:6379>srandmember gender
    "c"
    redis 127.0.0.1:6379>srandmember gender
    "c"
    redis 127.0.0.1:6379>srandmember gender
    "f"
    redis 127.0.0.1:6379>srandmember gender
    "f"
    redis 127.0.0.1:6379>srandmember gender
    "a"
    redis 127.0.0.1:6379>srandmember gender
    "e"
    redis 127.0.0.1:6379>srandmember gender
    "f"
    redis 127.0.0.1:6379>srandmember gender
    "f"
    

    05. sismember key value 作用:判断value是否在key集合中 是返回1,否返回0

    //想看看这个集合里面有没有这个元素?
    redis 127.0.0.1:6379>smembers gender
    1)"e"
    2)"d"
    3)"a"
    4)"c"
    5)"b"
    6)"female"
    7)"f"
    redis 127.0.0.1:6379> sismember gender Q  //查看Q是否是gender里面的value
    (integer)0  //0为不是gender的value
    redis 127.0.0.1:6379> sismember gender f
    (integer)1
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    

    06.smembers key 作用:返回(查看)集合中所有的元素

    redis 127.0.0.1:6379>smembers gender
    1)"female"
    2)"yao"
    3)"male"//这里没有按照添加的顺序排序下来,可能是随机性的
    

    07. scard key 作用:返回集合中元素的个数

    redis 127.0.0.1:6379>scard gender
    (integer)7
    

    08.smove source dest value(必须针对两个集合来操作) 作用:把source中的value删除,并添加到dest集合中

    s  move是移动的意思,给你一个Source的集合,dest目标集合,指定一个value(它将要怎么做),就将source里面种的某个value移动到dest目标集合里面去。
    redis 127.0.0.1:6379>sadd upper A B C
    (integer)3
    redis 127.0.0.1:6379>sadd lower a b c
    (integer)3
    redis 127.0.0.1:6379>smove upper lower A  //将upper的A移动到lower里面去
    (integer)1
    redis 127.0.0.1:6379>smembers upper
    1)"C"
    2)"B"
    redis 127.0.0.1:6379>smembers lower
    1)"c"
    2)"b"
    3)"a"
    4)"A"
    redis 127.0.0.1:6379>smove lower upper A
    (integer)1
    redis 127.0.0.1:6379>smembers lower
    1)"c"
    2)"b"
    3)"a"
    redis 127.0.0.1:6379>smembers upper
    1)"C"
    2)"B"
    3)"A"
    

    09.sinter key1 key2 key3 作用:求出key1 key2 key3 三个集合中的交集,并返回

    redis 127.0.0.1:6379>sadd s1 0 2 4 6
    (integer) 4
    redis 127.0.0.1:6379>sadd s2 1 2 3 4
    (integer) 4
    redis 127.0.0.1:6379>sadd s3 4 8 9 12
    (integer) 4
    redis 127.0.0.1:6379>sinter s1 s2 s3
    1)"4"
    redis 127.0.0.1:6379>sinter s1 s2 s3
    1)"4"
    
    redis 127.0.0.1:6379>sadd lisi a b c d
    (integer) 4
    redis 127.0.0.1:6379>sadd wang a c d e f
    (integer) 5
    redis 127.0.0.1:6379>sadd poly a c d g
    (integer) 4
    redis 127.0.0.1:6379>sinter lisi wang poly
    1)"d"
    2)"c"
    3)"a"
    redis 127.0.0.1:6379>
    

    10.sinterstore dest key1 key2 key3 作用:求出key1 key2 key3 三个集合中的交集,并赋给dest

    //如果需要将这个结果存起来
    redis 127.0.0.1:6379>sinter lisi wang poly
    1)"d"
    2)"c"
    3)"a"
    redis 127.0.0.1:6379>sinterstore result lisi wang poly
    (integer)3
    redis 127.0.0.1:6379>smembers result
    1)"d"
    2)"c"
    3)"a"
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    

    11.suion key1 key2..Keyn 作用:求出key1 key2 keyn的并集,并返回

    redis 127.0.0.1:6379>sadd lisi a b c d
    (integer) 4
    redis 127.0.0.1:6379>sadd wang a c d e f
    (integer) 5
    redis 127.0.0.1:6379>sadd poly a c d g
    (integer) 4
    redis 127.0.0.1:6379>sunion lisi wang poly
    1)"e"
    2)"d"
    3)"a"
    4)"g"
    5)"c"
    6)"b"
    7)"f"
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    

    12.sdiff key1 key2 key3 作用:求出key1与key2 key3的差集 即 key1-key2-key3

    redis 127.0.0.1:6379>sadd lisi a b c d
    (integer) 4
    redis 127.0.0.1:6379>sadd wang a c d e f
    (integer) 5
    redis 127.0.0.1:6379>sadd poly a c d g
    (integer) 4
    redis 127.0.0.1:6379>sdiff lisi wang
    1)"b"
    

    07.Redis知识点七:order set结构及命令详解

    有序集合 用什么排序呢?需要给它一个排序因子,既然有序每个元素就自身有一个权重或者说因子,为了方便讨论我们称之为score.在声明这个集合的时候,它不仅要声明这个集合的值,还有声明这个元素的score.如果没有score就达不到有序了。

    01.zadd key score1 value1 score2 value2... 添加元素

    redis 127.0.0.1:6379>zadd stu 18 lily 19 hmm 20 lilei 21 lilei
    (integer)3
    redis 127.0.0.1:6379>zadd class 12 lily 13 lucy 6 lilei 21 poly
    (integer)4
    

    02.zrem key value1 value2 删除集合中的元素

    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    

    03.zremrangebyscore key min max 作用:按照socre 来删除元素,删除score在[min,max]之间的

    redis 127.0.0.1:6379>zremrangebyscore stu 4 10
    (integer)2
    redis 127.0.0.1:6379>zrange stu 0 -1
    1)"f"
    

    04.zremrangebyrank key start end 作用:按照排名删除元素,删除名次在[start,end]之间的

    redis 127.0.0.1:6379>zremrangebyrank stu 0 1
    (integer)2
    redis 127.0.0.1:6379>zrange stu 0 -1
    1)"c"
    2)"e"
    3)"f"
    4)"g"
    

    05.zrank key member 作用:查询member 的排名(升序0名开始)

    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    

    06.zrevrank key memeber 作用:查询member的排名(降序0名开始)

    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    

    07.zrange key start stop [withscores] 作用:把集合排序后,返回名次[start,stop]的元素 默认是升序排序,withscres是把score也打印出来。

    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    

    08.zrevrange key start stop 作用: 把集合降序排列,取名字[start,stop]之间的元素。

    redis 127.0.0.1:6379>zadd class 12 lily 13 lucy 6 lilei 21 poly
    (integer)4
    redis 127.0.0.1:6379>zrank class 0 3  //这里是第0名到第3名之间的
    1)"poly"
    2)"lily"
    3)"lucy"
    4)"lilei"
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    

    09.zrangeby score Key min max [withscores]limit offset N 作用:集合(升序)排序后,取score在[min,max]内的元素,并跳过offser个,取出N个

    redis 127.0.0.1:6379>zadd stu 1 a 3 b 4 c9 e 12 f 15 g
    (integer)6
    redis 127.0.0.1:6379>zrangebyscore stu 3 12 limit 1 2 withsocres
    1)"c"
    2)"4"
    3)"e"
    4)"9"
    //在这里还是取里面的元素,不过是按分数来取里面的值。
    redis 127.0.0.1:6379>zadd class 12 lily 13 lucy 6 lilei 21 poly
    (integer)4
    redis 127.0.0.1:6379>zrangebyscore class 13 18
    1)""
    2)""
    

    10.zcard key 作用:返回元素个数

    redis 127.0.0.1:6379>zrangebyscore class 13 18  //取13岁到18岁的值
    1)"lucy"
    2)"lilei"
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    

    11.zcount key min max 作用:[min,max]区间内元素的数量

    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    

    12.zinterstore destination numkeys key1 [key2...]

    [weights weight[weight....]]
    [Aggregate sum|min|max]
    求key1,key2的交集,key1,key2的权重分布是weight,weight2
    聚合方法用:sum|min|max
    聚合的结构,保持在dest集合内
    注意:weights,aggregate 如何理解?
    答:如果有解决,交集元素又有score,score怎么处理?Aggreegate sum->score 相加,min求最小score,max最大score

    另:可以通过weight 设置不同key的权重,交集时,socre*weights

    redis 127.0.0.1:6379>zadd z1 2 a 3 b 4 c
    (integer)3
    redis 127.0.0.1:6379>zadd z3 2.5 a 1 b 8 d
    (integer)2
    redis 127.0.0.1:6379>zinterstore tmp 2 z1 z2
    redis 127.0.0.1:6379>zrange tmp 0 -1
    1)"b"
    2)"a"
    redis 127.0.0.1:6379>zrange tmp 0 -1 withscores
    1)"b"
    2)"4"
    3)"a"
    4)"4.5"
    redis 127.0.0.1:6379>zinterstore tmp 2 z1 z2 aggregate sum
    (integer)2
    redis 127.0.0.1:6379>zrange tmp 0 -1 withscores
    1)"b"
    2)"4"
    3)"a"
    4)"4.5"
    redis 127.0.0.1:6379>zinterstore tmp 2 z1 z2 aggregate min
    (integer)2
    redis 127.0.0.1:6379>zrange tmp 0 -1 withscores
    1)"b"
    2)"l"
    3)"a"
    4)"2"
    redis 127.0.0.1:6379>zinterstore tmp 2 z1 z2 weights 1 2
    (integer)2
    redis 127.0.0.1:6379>zrange tmp 0 -1 withscores
    1)"b"
    2)"l"
    3)"a"
    4)"2"
    redis 127.0.0.1:6379>zinterstore tmp 2 z1 z2 weights 1 2
    (integer)2
    redis 127.0.0.1:6379>zrange tmp 0 -1 withscores
    1)"b"
    2)"5"
    3)"a"
    4)"7"
    redis 127.0.0.1:6379>
    

    08.Redis知识点八:hash结构及命令详解

    01.hset key field value 作用:把key中filed域的值设为value 注意:如果没有field域。直接添加,如果有,则覆盖原field域的值。

    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    

    02.hmset key field1 value1[field2 value2 field3 value3 .....fieldn valuen] 作用:设置field1 ->N个域,对应的值是value1->N (对应PHP理解为$key=array(file1=>value1,field2=>value2......fuekdB=>valueN))

    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    

    03.hget key field 作用:返回key中field域的值

    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    

    04.hmget key field1 field2 fieldN 作用:返回key中的field1 field2 fieldN域的值。

    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    

    05.hgetall key 作用:返回key中,所有域与其值。

    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    

    06.hdel key field 作用:删除key中的field域

    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    

    07.hlen key 作用:返回key中的元素的数量

    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    

    08.hexists key field 作用:判断key中有没有field域。

    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    

    09.hinrby key field value 作用:是把key中的field域的值增长整项值value

    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    

    10.hinrby float key field value 作用:是把key中的fiekd域的值增长浮点值value

    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    

    11.hkeys key 作用:返回key中所有的field

    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    

    12.kvals key 作用:返回key中所有的value

    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    

    1

    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    

    1

    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    

    09.Redis知识点九:redis事务及锁应用

    Redis支持简单的事务

    Redis与MySql事务的对比

    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    

    1

    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    

    1

    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    

    1

    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    

    1

    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    

    1

    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    

    1

    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    

    010.Redis知识点十:频道发表与消息订阅

    1

    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    

    1

    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    

    1

    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    

    1

    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    

    1

    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    

    1

    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    

    1

    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379>
    

    011.Redis知识点十一:rdb快照持久化

    持久化方式:持久化:把数据存储于断电后不会丢失的设备中,通常是硬盘。

    常见的持久化方式:
    主从: 通常从服务器保持和持久化,如mongoDB的replication sets 配置
    日志:操作生成相关日志,并通过日志来恢复数据 couchDB对于数据内容,不修改,只追加,则文件本身就是日志,不会丢失数据

    Redis常见的两种持久方式一(rdb快照持久化):

    rdb的工作原理:每隔N分钟或N次写操作后,从内容dump数据形成rdb文件,压缩放在备份目录。

    注意: N分钟或N次,压缩,目录部分可通过参数来配置。

    rdb快照相关参数:

    save 900 1    #刷新快照到硬盘中,必须满足两者要求才会触发,即900秒之后1个关键字发生变化。
    save 300 10   #必须是300秒之后至少10个关键字发生变化。
    save 60 10000 #必须是60秒之后至少10000个关键字发生变化。
    stop-writes-on-bgsave-error yes #后台存储错误停止写。
    rdbcompression yes #使用LZF压缩rdb文件时校验。
    dbfilename dump.rdb #设置rdb文件名。
    dir ./ #设置工作目录,rdb文件会写入该目录。 
    

    012. Redis知识点十二:aof日志持久化

    013.Redis知识点十三:redis主从复制

    014.Redis知识点十四:redis运维常用命令

    015.Redis知识点十五:aof恢复与rdb服务器间迁移

    016.Redis知识点十六:sentinel运维监控

    017.Redis知识点十七:key设计原则

    018.Redis知识点十八:phpRedis扩展边要

    019.Redis知识点十九:微博i项目之用户注册与微博发布

    020.Redis知识点二十:微博项目之粉丝关系与推送微博

    021.Redis知识点二十一:增强微博cookie安全

    022.Redis知识点二十二:哈希数据存储微博

    023.Redis知识点二十三:微博key设计总结

    024.Redis知识点二十四:粉丝拉取模式

    025.Redis知识点二十五:微博冷数据写入mysql

    026.Redis知识点二十六:高速写入测试

  • 相关阅读:
    使用watch定时执行命令并显示结果
    LVS配置
    myeclipse通过查询源码查询方法
    导入struts2框架项目无法运行tomcat
    解决eclipse/myeclipse导入项目时出现红色叹号的方法
    my/eclipse中的debug调试
    导入项目后servlet报错
    转到Servlet出现500型错误
    关于快捷键导包失败
    关于jsp找不到servlet
  • 原文地址:https://www.cnblogs.com/SteveDZC/p/10462952.html
Copyright © 2020-2023  润新知