【十六】redis

什么是redis?

Redis 是一个基于内存的高性能key-value数据库。

一、启动方式:

①前端启动 ./redis-server

②后端启动 ./redis-server redis.conf

关闭:./redis-cli shutdown

redis自带客户端:    ./redis-cli -h 127.0.0.1 -p 6379(默认不需要密码认证,如果需要认证,那么接下来输入命令:auth yourpassword)

连接redis集群:./redis-cli -h 127.0.0.1 -p 6379 -c    

redis默认数据库的数量是16如果没有指定(select 15)哪一个数据库的话,默认存储在下标为0的数据库中

二、redis数据类型

注意⚠️:redis中所有的数据都是以byte[]形式存储的,所以说redis内部其实是没有数据类型的概念的。我们使用redis的api进行数据操作时,可以操作byte[]类型的数据,也可以操作String类型的数据(其实String类型最终还是转为了byte[]型,只是取的时候redis客户端会将byte[]数组转换成String进行展示)。

  • String

命令:1)SET key

          2)GET key

          3)MSET key value [key value …]

          4)MGET key [key …]

          5)del key

          6)incr key        incrby key increment

          7)decr key       decrby key decrement

          8)append key value

          9)strlen key

  • Hash:散列类型(字段的值只能是字符串类型)

 命令: 1)HSET key field value        HSETNX key field value

          2)HGET key field        HGETALL key

          3)HMSET key field value [field value ...]  

          4)HMGET key field [field ...]

          5)HDEL key field [field ...]

          6)HINCRBY key field increment

  • List:采用链表存储,操作两端数据

          1)LPUSH key value [value ...]        RPUSH key value [value ...]

          2)LRANGE key start stop

          3)LPOP key        RPOP key

          4)LLEN key

  • Set:集合类型(无序,不可重复)

          1)SADD key member [member ...]

          2)SREM key member [member ...]

          3)SMEMBERS key

          4)SISMEMBER key member

          5)SDIFF key [key ...](差集)

          6)SINTER key [key ...](交集)

          7)SUNION key [key ...](并集)

  • Sortedset(zSet):

  • 有序集合,可排序的,通过给set元素添加一个分数,通过分数排序

          1)ZADD key score member [score member ...]

          2)ZSCORE key member

          3)ZREM key member [member ...]

三、keys命令

  • keys my*

  • exists

  • del

  • rename my1 my2

  • type

  • 设置key的生存时间:EXPIRE key seconds   (只能设置key的生存时间,不能设置hash中每一项的过期时间,-1代表永久)

  • 查看key剩余的生存时间:TTL key     

四、redis持久化方案

  • Rdb方式(默认方式,保存内存中的数据):通过快照来将数据持久化到磁盘中

60s至少有10000个键被改动自动保存一次数据集

rdb的问题:redis非法关闭,那么将会丢失最后一次持久化后的数据

  • Aof(保存的是命令集合,将redis.conf的appendonly修改为true即可):操作一次redis数据库,则将操作的记录存储到aof持久化文件中。

同时设置aof和rdb方式,如果redis重启,那么数据从aof文件中加载

五、redis的主从复制

redis集群不需要手动配置slave,自动会设置slave

解决了高可用问题,当master宕机时,可以使用从机(slave)继续提供服务

六、redis集群

①所有的redis节点彼此互联,采用ping-pong机制

②节点的fail是通过集群中超过半数的节点检测失效时才生效——投票(所以节点数量一般是不小于3的奇数)

③客户端与任意一个节点相连,就连接上了该集群。

④redis-cluster把所有的物理节点映射到[0-16383]slot上

集群不可用:当集群中某一节点宕机并且没有slave或者超过半数以上的master宕机    

七、Redis与Memcached的区别与比较

1 、Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,zset,hash等数据结构的存储。memcache支持简单的数据类型,String。

2 、Redis支持数据的备份,即master-slave模式的数据备份。

3 、Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用,而Memecache把数据全部存在内存之中

4、 redis的速度比memcached快很多

5、Memcached是多线程,非阻塞IO复用的网络模型;Redis使用单线程的IO复用模型,redis利用队列技术将并发访问变为串行访问,消除了传统数据库串行控制的开销。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值