启动与关闭Redis服务、进入Redis环境
1.启动Redis服务
redis-server 拷贝的redis.conf的位置
redis-server redis6380/redis.conf 启动6380Redis服务
2.关闭Redis服务
redis-cli shutdown # 默认关闭的是本机的6379端口的Redis服务
全称:
redis-cli -h 主机地址 -p 要关闭的Redis端口号 shutdown
redis-cli -h redis6380/redis.conf -p 6380 shutdown
3.进入Redis客户端环境
redis-cli -h Redis所在主机地址 -p 6379Redis
redis-cli -h localhost -p 6381 进入6381的环境
Redis的全称是Remote Dictionary Server
Redis是一种基于键值对(key-value)的NoSQL数据库。
Redis主从复制:
Redis的主从复制是单向的,只能从master复制数据到slave。
设置主从关系:
1. 在从服务器(slave)Redis命令行中直接输入:slaveof master的地址 master的端口号
2. 在从服务器(slave)的配置文件redis.conf中加入 slaveof master的地址 master的端口号
切主与断开复制:
切主操作:
slaveof master的地址 master的端口号
slaveof 127.0.0.1 6379 主从复制
断开复制:
slaveof no one
Redis特性
速度快
正常情况下,Redis执行命令的速度非常快,官方的数据是读写性能10万/秒。
速度快的主要原因:
Redis所有数据都是存放在内存中的;
Redis是用C语言实现的;
Redis使用了单线程架构;
基于键值对的数据结构服务器
Redis提供了5种基本数据结构:字符串、哈希、列表、集合、有序集合。
持久化
虽然Redis的所有数据都是存放在内存中的,但也提供了持久化的功能。
主从复制
keys * 查看所有的key
type key 查看key所对应的value的数据类型
del key [key1 key2 …]删除key
expire key 过期时间(秒)
ttl key 查看键的剩余过期时间
一:字符串(string)
常用命令
(1)设置值
set key value [nx|xx]
注意:nx当key不存在时,才能设置成功
xx当key存在时,才能设置成功ss
(2)获取值
get key
(3)批量设置值
mset key value [key value …]
)批量获取值
mget key [key …]
(5) 计数
incr key
注意:incr 命令用于对值做自增操作,返回 结 果有三种情况:
值不是整数,返回错误
值是整数,返回自增后的结果
键不存在,按照值为0自增,返回结果为1
(6) 设置时间期限
setex a 10 good
运算:
incr key #加1
decr key #减1
incrby a 5 #加5
decrby a 5 #减5
(7)其他
append a b #在a 追加b
二:哈希(hash)
在Redis中,哈希类型是指值本身又是一个键值对结构。
常用命令
(1) 设置值
hset key field value
hset student name tom
(2) 获取值
hget key field
hget student name
(3)删除field
hdel key field [field …]
(4)计算field个数
hlen key
(5)批量设置或获取field-value
hmset key field value [field value…]
hmset student name tom age 20 sex boy score 80
三:列表
列表类型用来存储多个有序元素
常用命令
(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(队列)
四:集合(set)
集合中不允许有重复元素,并且集合中的元素是无序的,不能通过索引下标获取元素
集合内操作
(1)添加元素
sadd key element [element…]
(2)删除元素
srem key element[element…]
(3)计算元素个数
scard key
(4)获取所有元素
smembers key
(5)随机从集合返回指定个数元素
srandmember key [count]
(6)从集合随机弹出元素
spop key [count]
注意:从Redis3.2版本开始,才支持[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 [withscores]
zrevrangebyscore key max min[withscores]
(9)返回指定分数范围成员个数
zcount key min max
(10)删除指定分数范围的成员
zremrangebyscore key min max