Redis
Redis的全称是Remote Dictionary server
Redis是一种基于键值对(key-value)的NoSQL数据库
特性:
1.速度快 : 正常情况下,Redis执行命令的速度非常快,官方的数据是读写性能10万/秒。
读写速度快的主要原因是:
Redis所有数据都是存放在内存中的;
Redis是用C语言实现的;
Redis使用了单线程架构;
2.基于键值对的数据结构服务器
Redis提供了五种基本数据结构数据:字符串、哈希、列表、集合、有序集合。
3.持久化 : 虽然Redis的所有数据都是存放在内存中的,但也提供了持久化的功能。
4.主从复制
一些常用的命令
keys * 查看所有的key
type key 查看key所对应的value的数据类型
del key [key1 key2 ...] 删除key
expire key 过期时间(秒)
ttl key 查看键的剩余过期时间
五种数据结构
一:哈希:在Redis中,哈希类型实质本身又是一个键值对结
常用命令:
(1)设置值
hset key field value
(2)获取值
hget key field
(3)删除field
hdel key field [field ...]
(4)计算field个数 hlen key
(5)批量设置或获取field-value
hmset key field value [field value]
hmget key field [field ...]
二:字符串:
常用命令:
(1)设置值 set key value [nx|xx]
(1)设置值 set key value [nx|xx]
注意:nx当key不存在时,才能设置成功 ; xx当key存在时,才能设置成功
(2)获取 get key
(3)批量设置值 mset key value [key value ...]
(4)批量获取值 mget key [key ...]
(5)计数 incr key
注意:incr 命令用于对值做自增操作,返回结果又三种情况:
值不是整数,返回错误
值是整数,返回自增后的结果、
键不存在,按照值为0自增,返回结果为1 .
三:列表 列表类型用来存储多个有序元素
常用命令
(1)从右边插入元素
rpush key value [value ...]
(2)从坐标插入元素
lpush key value [value ...]
(3)获取指定范围内的元素列表
lrange key start end (注意:此处包括end索引)
(4)获取列表指定索引下标的元素
lindex key index
(5) 获取列表长度
llen key
(6)从列表左侧(右侧)弹出元素
lpop | rpop key
(7)删除指定元素
lrem key count value
根据count的不同删除元素:
count>0,从左到右,删除最多count个元素
count<0,从右到左,删除最多count绝对值个元素
count=0,删除所有
(8)修改指定索引下标的元素
lset key index newValue
列表可以组织成栈和队列:
lpush + lpop = Stack(栈)
lpush + rpop = Queue(队列
)
四:集合 集合中不允许有重复元素,并且集合中的元素是无序的,不能通过索引下表获取元素
集合内操作
(1) 添加元素
sadd key element [element...]
(2) 删除元素
srem key element [element]
(3)计算元素个数 scard key
(4)获取所有元素 smembers key
(5)随机从集合返回指定个数元素 srandmember key [count]
(6)从集合随机弹出元素 spop key [count]
集合间操作
(1)求多个集合的交集 sinter key [key...]
(2)求多个集合的并集 sunion key [key...]
(3)求多个集合的差集 sdiff key [key...]
五:有序集合
有序集合保留了集合不能重复成员的特性,但是不同的是,有序集合中的元素可以根据每个成员的分数进行排序
常用操作
(1)添加成员 zadd key score member [score member ...]
(2)计算成员个数 zcard key
(3)获取某个成员的分数 zscore key member
(4)删除成员 zrem key member [member...]
(5)增加成员分数 zincrby key increment member
(6)计算成员的排名 zrank key member (从低到高) ; zrevrank key member (从高到低)
(7) 返回指定排名范围的成员 zrange key start end [withscores] ;
zrevrange key start end [withscores]
(8)返回指定分数范围的成员 zrangebyscore key min max [withscore] ; zrerangebyscore key min max [withscore]
(9)返回指定分数范围成员个数 zcount key min max
(10 )删除制定分数范围的成员 zremrangebyscore key min max
Redis 主从复制:
Redis 的主从复制是单向的,只能从master复制数据到slave。
设置主从关系:
1.在从服务器(slave)Redis命令行中直接输入:slaveof master的地址 master的端口号3
2.在从服务器(slave)的配置文件redis.conf中加入 slaveof master的地址 master的端口
切主与断开复制:
切主操作: slaveof master的地址 master的端口
断开复制:slaveof no one