Redis常用命令

Redis
一、介绍
程序是用来处理数据的,Redis是用来存储数据的,程序处理完的数据要存储在Redis中,不同特点的数据要存储在Redis中不同类型的数据结构中。

数据在没有存到Redis之前存在内存中。

二、Redis的五种数据类型以及操作命令
Redis的key的操作命令

keys

语法:keys pattern

作用:查找所有符合模式pattern的key。pattern可以使用通配符。

通配符:*(匹配0到多个字符),?(匹配一个字符),[](匹配括号中的一个字符)

 

2 . exists:判断key是否存在于数据库中

语法:exists key ;判断1个key是否存在,存在返回1,不存在返回0。

exists key [key key ...];判断多个key是否存在,返回存在的个数。

3.  move:移动指定的key到指定的数据库实例(Redis默认有16个库),用户默认使用第0个库

语法:move key index

4.  ttl:查看key的剩余生存时间

语法:ttl key ;返回值:-1:没有设置生存时间;-2:该key不存在

 

5.  expire:设置key的最大生存时间

语法:expire key seconds

6.  type:查看指定key的数据类型

语法:type key

7.  rename:重命名指定key

语法:rename key newkey

8.  del:删除指定key和value

语法:del key:删除一个key,

del key [key key ...]:删除多个key

返回值:删除实际删除数据条数

9.  decrby:减去指定值

语法:decrby key num

10.  incrby:增加指定值

语法:incrby key num

二.  字符串类型:string(key-value)

一 。添加数据:set key value;(如果key以存在,之前的value将会被覆盖)

二。获取指定key的值:get key;

三。追加字符串:append key value;返回字符串长度;(如果key不存在,则存储为新的key)

四。获取字符串长度:strlen key;

五。将value数值加一:incr key;返回计算后的值;(如果该值不是数值,将报错;如果key不存在,则自动存储新的key,并初始化为0,然后加一);

六。将value数值减一:decr key;用法同上;

七。将value数值加某一具体值:incrby key increment;

八。将value数值减某一具体值:decrby key increment;

九。闭区间截取字符串中的某一段:getrange key startIndex endIndex;(下标从0开始,最后一个字符的下标为-1或字符串长度减1)

十。用新的value覆盖从某一下标开始的字符串:setrange key offset value;

十一。添加新的数据并同时设置生命周期:setex key seconds value;

十二。当key值不存在时添加数据:setnx key value;key值不存在时添加,返回结果1;key值已存在不添加,返回结果0;

十三。批量添加新的数据:mset key1 value1 key2 value2 key3 value3(中间使用空格隔开)

十四。批量获取数据:mget key1 key2 key3 (中间使用空格隔开)

十五。批量添加key不存在的数据:msetnx key1 value1 key2 value2...(所有key都不存在设置成功,只要有一个存在设置失败)

三。 列表类型:list(key:value1 value2...)有序可重复列表

1。将一个或多个值依次插入列表的表头:lpush key value1 value2 ...(若该key已存在,将新值追加在原来的列表中)(l:left)

2。获取列表中指定下标区间的元素:lrange key startIndex endIndex

3。将一个或多个值依次插入列表的表尾:rpush key value1 value2 ...(若该key已存在,将新值追加在原来的列表中)(r:right)

4。删除指定列表的表头元素并返回:lpop key;

5。删除指定列表的表尾元素并返回:rpop key;

6。获取指定列表中指定下标的元素并返回:lindex key index

7。获取指定列表的长度:llen key

8。根据count的值移除列表中的指定的某一些元素:lrem key count value(count>0:从表头开始数前n个;count<0:从表尾开始数前n个;count=0:移除所有跟value相同的元素)【n=count】

四。集合类型:set(key:member1 member2...)value无序,并且不能重复

1。将一个或多个元素添加到指定的集合中:sadd key member1 member2...

2。获取指定集合中的所有元素:smembers key

3。判断指定元素在指定集合中是否存在:sismember key member; 存在返回1,不存在返回0;

4。获取指定集合的长度:scard key

5。移除指定集合中一个或者多个元素:srem key member1 member2...(不存的元素会忽略)

6。随机获取指定集合中的n个元素:srandmember key [count];(count不指定,默认为1;7.。7.。count>0:随机获取的数不重复,count<0:随机获取的数可能重复)

7。从指定集合中随机移除一个或者多个元素:spop key [count](count不指定,默认为1);

8。指定集合中移动指定一个元素到另一个集合中:smove source destination member;

9。返回差集(一个集合中有,其他集合没有):sdiff key key...

10。返回交集(两个集合共同存在的值):sinter key1 key2...

11。返回并集(两个集合所有值):sunion key1 key2...

五。双列集合:hash(单key:filed-value filed-value...)

1。将一个或多个键值对存储到指定集合中:hset key filed value ...

2。获取hash表中指定的filed值:hget key filed;

3。批量获取hash表中指定的filed值:hmget key filed1 filed2...;

4。获取指定hash表中的所有filed和value:hgetall key;

5。删除指定hash表中的一个或者多个filed:hdel key filed1 filed2...

6。获取指定hash表中所有的filed的个数:hlen key

7。判断指定hash表中指定的filed是否存在:hexists key filed

8。获取指定hash表中所有filed的列表:hkeys key;

9。获取指定hash表中所有value的值:hvals key;

六。有序单列集合:zset()value会根据关联的分数进行排序,不能重复

1。将一个或者多个member及score加入有序集合:zadd key score1 member1 score2 member2 

2。根据指定集合获取指定区间的元素:zrange key startindex endindex

3。根据指定分数区间获取元素:zrangebyscore key min max

4。删除指定集合中一个或多个指定元素:zrem key member1 member2...

5。获取集合中元素的个数:zcard key

6。获取指定元素的排名:zrank key member(排名从0开始) zrevrank(倒叙排名:从大到小)

7。获取指定集合中在指定分数区间的元素个数:zcount key min max

8。获取指定集合中的指定元素的分数:zscore key member

三、回顾Redis的配置文件
1。可以在redis.conf中修改配置文件,若使用配置文件中的参数,启动Redis的时候要选择使用配置文件启动,否则使用默认配置启动。(redis-server redis.conf &)

        1。port:启动端口,默认6379;

        2。bind:客户端连接使用IP,默认本地主机的任意一个IP

2。常规配置:

        1。loglevel:配置日志级别:开发阶段配置debug,上线阶段配置notice和warning

        2。ogfile:指定日志文件。使得日志信息输出到指定文件中。

        3。databases:配置Redis服务默认创建的数据库实例个数,默认值为16;

3。安全配置:(高效性,默认不用密码)

        1。requirepass:配置Redis的访问密码,默认不配置密码,即访问不需要密码验证。此配置     项需要在protected-mode-yes时起作用,使用密码登录客户端:redis-cli-h ip -p 6379 -a pwd

四、Redis的持久化
Redis提供持久化策略,用一些适当的手段在适当的时机将数据存在磁盘中,每次启动Redis都会自动加载磁盘的数据到内存中。

1、RDB(redis默认持久化策略)
RDB策略:在指定时间间隔内,redis服务执行指定次数的写操作,会自动触发依次持久化操作。

默认策略:【可以通过配置文件中的save <seconds><changes>修改】

        1分钟内改变了1万次

        5分钟内改变了10次

        15分钟内改变了1次

配置属性:

save <seconds><changes>:配置持久化策略

dbfilename:配置redis RDB持久化数据存储的文件

dir:配置redis RDB持久化文件所在目录

2。AOF
采用操作日志来记录进行每一次写操作,每次redis服务启动时,都会重新执行一遍操作日志中的命令。效率较低,redis默认不开启。

appendonly:配置是否开启AOF

appendfilename:配置操作日志文件

3、总结
如果数据特别重要,可以开启两个策略,但是效率会降低。一般只开启RDB
————————————————

五、Redis的事务
事务:把一组数据库放在一起执行,保证操作的原子性,要么同时成功,要么同时失败。

redis事务:允许把一组redis命令放在一起,把命令进行序列化,然后执行,可以保证部分原子性。

1、命令
        multi:用来标记一个事务的开始。

        exec:用来执行一组已压入的队列。

        redis事务只能保证部分原子性:

        一组数据在开始事务后,压入队列的过程中有其中一条数据出错,则所有事务将会回滚,可以保证事务的原子性。

        如果一组命令中,在压入队列过程中正常,但是在执行事务队列命令时发生了错误,则只会影响发生错误的命令,不会影响其他命令的执行,不能够保证事务的原子性。

        discard:清除所有压入队列中的命令,并且结束整个事务。

  • watch:监控某一个键,当事务在执行过程中,此键代码的值发生变化,则本事务放弃执行;否则,正常执行。

  • unwatch:放弃监控所有键

七、redis的主从复制(集群)
主少从多,主写从读,读写分离,主写同步复制到从。

        搭建一主二从redis集群:

        搭建三台redis服务:使用一个redis模拟三台redis服务

        提供三份redis配置文件:redis6379.conf、redis6380.conf、redis6381.conf

        修改三份配置文件:

                        bind 127.0.0.1

                        port 6379

                        pidfile /var/run/redis-6379.pid

                        logfile "6379.log"

                        dbfilename dump6379.rdb

四。启动三个redis服务

                redis-server redis6379.conf &

五。通过redis客户端分别连接三台redis服务:

                redis-cli -h 127.0.0.1 -p 6379

                redis-cli -h 127.0.0.1 -p 6380

        r        edis-cli -h 127.0.0.1 -p 6381

六。查看三台redis服务在集群中的主从角色:

1。info replication ;默认情况下redis服务器都是主机,可以读写操作,没有从机

七每一台服务器写数据,测试三台服务器独立,互补影响。

  • 设置主从关系(6379为主机):主机的数据会自动存到从机上

    • 在6380上执行:slaveof 127.0.0.1 6379

    • 在6381上执行:slaveof 127.0.0.1 6379

  • 全量复制:一旦主从关系设置,主机上的所有数据会自动同步复制到从机。

  • 主写从读,读写分离:在从机上进行写操作,报错;

  • 主机宕机:(模拟命令:redis-cli -h 127.0.0.1 -p 6379 shutdown)

    • 从机原地待命:可以读已有的数据

  • 主机恢复后一切恢复
  • 从机宕机:

    • 主机不连接已宕机的从机,其他从机未受影响。

    • 从机恢复后与主机断开连接,自己默认为一个独立的主机

从机上位:

        1主机宕机

        2其中一个从机与主机断开连接,该从机变为主机,然后设置其他从机从属于该主机。

               1 slaveof no one

               2 slaveof 127.0.0.1 6380

        3 数据位未丢失。

宕机的主机再恢复:(成为一个独立的主机)

                1可以作为主机:让其他从机连接(从机的数据不会更新到主机中)

                2可以作为从机:连接到其他主机或从机

八、哨兵模式
               一 配置文件

                      1  新建配置文件:touch redis_sentinel.conf

                      2  打开配置文件:vim redis_sentinel.conf

                      3  设置参数:sentinel monitor dc-redis 127.0.0.1 6379 1

                             1  指定监控主机的IP地址

                             2  设置投票数量为1

                     4   启动哨兵服务:

                              1  redis-sentinel redis_sentinel.conf

1   主机宕机:哨兵程序自动选择从机上位;

2   之前的主机恢复:自动从属于新的主机。

————————————————

 

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值