什么是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中所有的数据都是以byte[]形式存储的,所以说redis内部其实是没有数据类型的概念的。我们使用redis的api进行数据操作时,可以操作byte[]类型的数据,也可以操作String类型的数据(其实String类型最终还是转为了byte[]型,只是取的时候redis客户端会将byte[]数组转换成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
命令: 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
1)LPUSH key value [value ...] RPUSH key value [value ...]
2)LRANGE key start stop
3)LPOP key RPOP key
4)LLEN key
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 ...](并集)
有序集合,可排序的,通过给set元素添加一个分数,通过分数排序
1)ZADD key score member [score member ...]
2)ZSCORE key member
3)ZREM key member [member ...]
keys my*
exists
del
rename my1 my2
type
设置key的生存时间:EXPIRE key seconds (只能设置key的生存时间,不能设置hash中每一项的过期时间,-1代表永久)
查看key剩余的生存时间:TTL key
Rdb方式(默认方式,保存内存中的数据):通过快照来将数据持久化到磁盘中
rdb的问题:redis非法关闭,那么将会丢失最后一次持久化后的数据
Aof(保存的是命令集合,将redis.conf的appendonly修改为true即可):操作一次redis数据库,则将操作的记录存储到aof持久化文件中。
同时设置aof和rdb方式,如果redis重启,那么数据从aof文件中加载
redis集群不需要手动配置slave,自动会设置slave
解决了高可用问题,当master宕机时,可以使用从机(slave)继续提供服务
①所有的redis节点彼此互联,采用ping-pong机制
②节点的fail是通过集群中超过半数的节点检测失效时才生效——投票(所以节点数量一般是不小于3的奇数)
③客户端与任意一个节点相连,就连接上了该集群。
④redis-cluster把所有的物理节点映射到[0-16383]slot上
集群不可用:当集群中某一节点宕机并且没有slave或者超过半数以上的master宕机
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利用队列技术将并发访问变为串行访问,消除了传统数据库串行控制的开销。