Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI [C语言](https://baike.baidu.com/item/C语言)编写、支持网络、可基于内存亦可持久化的日志型、Key-Value[数据库](https://baike.baidu.com/item/数据库/103728),并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由[Pivotal](https://baike.baidu.com/item/Pivotal)赞助redis是一个key-value[存储系统](https://baike.baidu.com/item/存储系统)string(字符串)list([链表](https://baike.baidu.com/item/链表))set(集合)zset(sorted set --有序集合)hash(哈希类型)
默认使用第0个可以使用select [index]进行切换数据库查看数据库大小 dbsize清空数据库 flushdb清空全局数据库 flushallkeys * 查看所有KEYexists name 判断key是否存在,1:代表存在,0:代表不存在move [key] [db] move name 1 从1库移除nameexpire [key] [seconds] 设置KEY过期时间ttl key 查看key是否过期set key value 设置keyget key 获取keytype name 查看key类型具体命令学习:http://www.redis.cnredis是单线程的:redis是基于内存操作,CPU不是redis的性能瓶颈redis的瓶颈是根据机器的内存和网络带宽。QPS每秒查询率(Query Per Second) TPS吞吐量redis单线程为什么还很快?误区: 1、高性能的服务器一定是多线程的 2、多线程(CPU上下文切换)一定比单线程效率高 3、CPU>内存>磁盘 核心:redis是将所有数据放在内存中的,所以使用单线程效率是最高的 多线程上下文切换耗时长,对于内存来说,多次读写都是在一个CPU上的。
6、redis的5大数据类型和3种特殊数据类型
字符串:string 计数器、粉丝数、对象缓存存储列表:list集合:sets散列:hashes有序集合:sorted sets地理空间:geospatial超日志:hyperloglog位图:bitmaps官方介绍:Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache, and message broker. Redis provides data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs, geospatial indexes, and streams. Redis has built-in replication, Lua scripting, LRU eviction, transactions, and different levels of on-disk persistence, and provides high availability via Redis Sentinel and automatic partitioning with Redis ClusterRedis是一种开放源代码(BSD许可)的内存中数据结构存储,用作数据库,缓存和消息代理。Redis提供数据结构,例如字符串,哈希,列表,集合,带范围查询的排序集合,位图,超日志,地理空间索引和流。Redis具有内置的复制,Lua脚本,LRU驱逐,事务和不同级别的磁盘持久性,并通过Redis Sentinel和Redis Cluster自动分区提供了高可用性。
6.1、string设计的命令
1setex key seconds value 设置过期时间setnx key value 不存在设置,分布式锁中会经常用到mset key[1] value[1] key[2] value[2]mget key[1] key[2]msetnx key1 value key4 value 验证了原子性
6.2、list设计的命令
栈、队列lpush key value rpush key value lrange key start stoplpop key rpop keylindex key indexllen key 列表长度lrem key count value 移除################################################ltrim key start stop 截取指定长度...................
6.3、set设计的命令
########################################sadd key member 添加smembers key 查看sismember key member 判断集合里的成员是否存在#########################################scard key 查看成员个数srem key member 移除set集合指定成员srandmember key [count] 随机抽取spop key 随机移除成员##########################################smove source destination member 将指定的成员从一个集合移动到另一个集合sdiff key1 key2 差集sinter key1 key2 交集sunion key1 key2 并集##########################################
6.4、hash设计的命令
Map集合,key-maphset key field value hget key field hmset key field1 value1 field2 value2hmget key field1 field2hgetall key hdel key field#################################hlen key hkeys key 获取fieldhvals key 获取valuehash 适合存储对象,尤其是用户信息,经常变动的信息
复制原理:slave启动成功后,向主发送一个SYNC同步命令,Master接受到命令,启动后台的存盘进程,同时收集所有接受到的用于修改数据集命令,在后台进程执行完毕后,Master将传送整个数据文件到Slave,并完成一次同步。全量复制:增量复制:主+从+从如果主机断开连接,在其他两从任意一个上使用slaveof no one可以使其变主,则另一个节点可以手动连接到这个主节点,如果主节点恢复,得重新连接,一般企业不会用,企业会用哨兵模式。