1)启动redis
# 配置参数的方式启动
redis-server redis.windows.conf
# 指定端口号
redis-server [--port 6379]
2)连接redis
./redis-cli [-h 127.0.0.1 -9 6379]
3)停止redis
redis-cli shutdown
#或者根绝进程id直接杀掉
kill redis-pid
4)测试连通性
127.0.0.1:6379> ping
PONG
#获取所有键
keys *
#*表示通配符,表示任意字符,会遍历所有键显示所有的键列表,时间复杂度O(n),在生产环境不建议使用。
#获取键总数
dbsize
#获取总键数时不会遍历所有的键,直接获取内部的变量,时间复杂度0
#查询键是否存在
exists key
exists [key]#查询多个键,返回个数
#查询键类型
type key
object encoding key 查看value的编码格式
#移动键
move key db
#查询key的有效期
ttl key #秒语法
pttl key #毫秒语法
#设置过期时间
expire key seconds #秒语法
pexpore key seconds #毫秒语法
#设置永不过期
persist key
#更改键名称
rename key newkey
#清除指定的库
flush db
#存放键值对
set key value
#如果不存在,插入
setex key secound value
#删除键值
del key
#获取键值对
get key
#设置值,返回旧值
getset key newvalue
#值递增,递减(如果字符串中的值是数字类型,可以使用incr命令每次递增,不是数字类型的则报错)
incr key #递增
decr key #递减
#一次想递增N的话,用incrby命令,如果是浮点型数据,可以用incrbyfloat命令递增
#同样,递减用decrby/decrbyfolat
#批量存放键值
mset key value [key value...]
mset key1 value1 key2 value2 key3 value3
#批量获取键值
mget key[key...]
mget key1 key2 key3
#获取长度
strlen key
#追加内容(向键值尾部添加)
append key value
#获取部分字符
getrange key start end
Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象。
Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)。
#将哈希表 key 中的字段 field 的值设为 value 。
HSET key field value
#同时将多个 field-value (域-值)对设置到哈希表 key 中。
HMSET key field1 value1 [field2 value2]
#获取所有给定字段的值
HMGET key field1 [field2]
#获取哈希表中的数量
hlen key
#获取哈希表中的键值
hkeys key
#获取哈希表中所有的值
HVALS key
#判断哈希表中是否存在字段
HEXISTS key field
#删除一个或者多个哈希表中的字段
hdel key field1[field2...]
#获取在哈希表中指定 key 的所有字段和值
HGETALL key
#只有在字段 field 不存在时,设置哈希表字段的值。
HSETNX key field value
#为哈希表key中的指定字段的整数值加上增量 increment 。
HINCRBY key field increment
#将一个元素值插入列表头部
lpush key value
#将一个或者多个元素值插入列表头部
LPUSH key value [value...]
#右插入
rpush key value[value...]
#获取列表指定范围内的元素
lrange key start end
#移出并获取列表的第一个元素
lpop key
#移除列表的最后一个元素,返回值为移除的元素。
rpop key
#获取list数量
llen key
#移出元素
lrem key count value
##count>0 从表开始向结尾搜索,移除与value相等的元素,数量为count
##count<0 从表结尾向表头搜索,移除与value相等的元素,数量为count的绝对值
##count=0 移除表中所有与value相等的值
#通过索引设置索引位置的值
lset key index value
#对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。
ltrem key start stop
#在列表的元素前插入元素
LINSERT key BEFORE pivot value
#在列表的元素后插入元素
LINSERT key AFTER pivot value
#移除列表的最后一个元素,并将该元素添加到另一个列表并返回
rpoplpush list list2
#从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
BRPOPLPUSH source destination timeout
#移出并获取列表中的第一个元素,如果列表没有元素会阻塞直到等待超时或者发现元素弹出为止
blpop key [key...] timeout
集合类型和列表类型相似,只不过是集合是无序且不可重复的。
#存储值
sadd key member[member...]
#获取元素
smembers key
#随机获取语法
srandmember langs count
#判断元素在集合中是否存在
sismember key member
#获取集合元素个数
scard key
#删除集合元素
srem key member[member]
#操作:集合间运算:差集 | 交集 | 并集
sdiff key1 key2 #取key1中存在,key2中不存在的值
sinter key1 key2 #取key1和key2的交集
sunion key1 key2 #取key1和key2的并集
#从集合中弹出一个元素(集合中的元素出栈)
spop key
和列表的区别:
1、列表使用链表实现,两头快,中间慢。有序集合是散列表和跳跃表实现的,即使读取中间的元素也比较快。
2、列表不能调整元素位置,有序集合能。
3、有序集合比列表更占内存。
#存储值
zadd key score member [score member ...]
#查看集合成员数量
zcard key
#增长分数
zincrby key num member 例:zincrby zset1 4 yuwen zset1集合中的yuwen学科增加4分
#获取分数
zscore key member
#按顺序索引取值,取第几名到第几名
zrange key start end [withscores] #withscores 带分数显示
#指定范围的值
zrangebyscore key socre_start socre_end withscores
#指定范围的值,并且分页
zrangebyscore key socre_start socre_end withscores limit 1 2 分页
#获取指定范围的值的元素数量
zcount key min max
#删除一个或多个元素
zrem key member[member...]
#按照排名范围删除元素
zremrangebyrank key start end
#按照分数排名范围删除原色
Zremrangebyscore key start end
#查看所有的元素
Zrank key 0 -1 分数最小的排名为0
zrevrank key 0 -1 分数最大的排名为0
sort mylist 排序
sort mylist alpha desc limit 0 2 字母排序
sort list by it:* desc by命令
sort list by it:* desc get it:* get参数
sort list by it:* desc get it:* store sorc:result sort命令之store参数:表示把sort查询的结果集
订阅与发布:
订阅频道:subscribe chat1
发布消息:publish chat1 "hell0 ni hao"
查看频道:pubsub channels
查看某个频道的订阅者数量: pubsub numsub chat1
退订指定频道: unsubscrible chat1 , punsubscribe java.*
订阅一组频道: psubscribe java.*
redis事物:
隔离性,原子性,
步骤: 开始事务,执行命令,提交事务
multi //开启事务
sadd myset a b c
sadd myset e f g
lpush mylist aa bb cc
lpush mylist dd ff gg
服务器管理
dump.rdb
appendonly.aof
//BgRewriteAof 异步执行一个aop(appendOnly file)文件重写
会创建当前一个AOF文件体积的优化版本
//BgSave 后台异步保存数据到磁盘,会在当前目录下创建文件dump.rdb
//save同步保存数据到磁盘,会阻塞主进程,别的客户端无法连接
//client kill 关闭客户端连接
//client list 列出所有的客户端
//给客户端设置一个名称
client setname myclient1
client getname
config get port
//configRewrite 对redis的配置文件进行改写
rdb
save 900 1
save 300 10
save 60 10000
aop备份处理
appendonly yes 开启持久化
appendfsync everysec 每秒备份一次
命令:
bgsave异步保存数据到磁盘(快照保存)
lastsave返回上次成功保存到磁盘的unix的时间戳
shutdown同步保存到服务器并关闭redis服务器
bgrewriteaof文件压缩处理(命令)