一、基本命令
1.启动redis服务
在redis的src目录下执行命令:
./redis-server
2.启动redis客户端实例
在redis的src目录下执行命令:
./redis-cli
3.连接远程redis服务器:
redis-cli -h host -p port -a password
4.设置key-value
set key value
5.获取值
get key
6.删除
del key
7.判断key是否存在
exists key
8.设置10秒过期
expire key 10
9.设置10毫秒过期
pexpire key 10
10.删除过期时间
persist key
11.切换数据库
redis有16个数据库(DB 0~DB 15),默认使用0号数据库
select index(index表示数据库编号)
12.清空当前选中的数据库
flushdb
13.清空所有数据库
flushall
14.查看当前数据库的所有key
keys *
keys *address*
15.查看字段类型
type key
16.检测连接是否存活
ping
17.在命令行打印一些内容
echo
18.退出客户端
quit、exit
19. 退出服务器端
shutdown
20.返回redis相关信息
info
21. 实时传递接收的请求
config get dir/*
22.显示慢查询
showlog
23. 查看当前数据库大小
dbsize
24.不同数据库之间数据是不能互通的,move移动键到指定数据库
move key n
25. 杀掉所有redis服务
killall redis-server
killall redis-sentinel
26.修改key名称
RENAME oldkey newkey
二、String
set name ljh --设置值
get name --获取值
getrange name 0 -1 --截取字符串,0对应start,1对应end
setrange key index value --从index开始替换value
getset name new_ljh --设置值,返回旧值
mset key1 value1 key2 value2 --批量设置
mget key1 key2 --批量获取
setnx key value --不存在就插入(not exists)
setex key time value --过期时间(expire)
incr age --执行+1
incrby age 10 --执行+10
decr age --执行-1
decrby age 10 --执行-10
incrbyfloat --增减浮点数
append --追加
strlen --长度
三、hash
hset myhash name ljh --添加一个键值对
hget myhash name --取出值
hmset myhash name ljh age 20 note "i am notes" --批量键值对
hmget myhash name age note
hgetall myhash --获取所有的键值对
hexists myhash name --是否存在
hsetnx myhash score 100 --不存在的话创建,存在的话修改
hincrby myhash id 2 --增加2
hdel myhash name --删除
hkeys myhash --只取key
hvals myhash --只取value
hlen myhash --长度
四、list
lpush mylist a b c --左插入
rpush mylist x y z --右插入
lrange mylist 0 -1 --数据集合
lpop mylist --弹出元素
rpop mylist --弹出元素
llen mylist --长度
lrem mylist count value --根据值来删除(count表示要删除多少个值为value的元素)
lindex mylist 2 --指定索引的值
lset mylist 2 n --索引设值
ltrim mylist 1 2 --截取指定的元素集合
linsert mylist before 1 value --在值为1前面插入value值
linsert mylist after 1 value --在值为1的后面插入value值
rpoplpush list list2 --将list的最后一个元素移到list2中
五、set
sadd myset e --添加一个元素
smembers myset --数据集合
srem myset e --删除
sismember myset e --判断元素是否在集合中
scard key_name --set集合中元素个数
sdiff | sinter | sunion --操作:集合间运算:差集 | 交集 | 并集
srandmember --随机获取集合中的元素
spop --从集合中弹出一个元素
六、zset
zadd zset 1 one --添加一个元素(1表示score,用作排序使用)
zadd zset 2 two
zadd zset 3 three
zincrby zset 1 one --分数+1
zscore zset two --获取分数
zrange zset 0 -1 --获取全部的值
zrange zset 0 -1 withscores --获取全部值并附带分数
zrangebyscore zset 10 25 withscores --分数在某个范围的值
zrangebyscore zset 10 25 withscores limit 1 2 --分页
Zrevrangebyscore zset 10 25 withscores --指定范围的值从大到小排序
zcard zset --元素数量
Zcount zset --获得指定分数范围内的元素个数
Zrem zset one two --删除一个或多个元素
Zremrangebyrank zset 0 1 --按照排名范围删除元素
Zremrangebyscore zset 0 1 --按照分数范围删除元素
七、hyperLogLog
pfadd mykey a b c d --向一个集合添加元素
pfmerge mykey3 mykey mykey2 --向合并mykey和mykey2中的元素到集合mykey3中,并且没有重复元素
pfcount mykey3 --查看mykey的基数(即重复元素只算一次)
八、bitmap
setbit mybitmap 0 0 --设置第0位的值为0
getbit mybitmap 0 --获得第0位的值
bitcount mybitmap --统计值为1的数量
九、 订阅与发布
订阅频道:subscribe chat1
发布消息:publish chat1 "hell0 ni hao"
查看频道:pubsub channels
查看某个频道的订阅者数量: pubsub numsub chat1
退订指定频道: unsubscrible chat1 , punsubscribe java.*
订阅一组频道: psubscribe java.*
十、分析key的方法
1.寻找bigKey,粗略的看下最大key
redis-cli自带的一个命令。对整个redis进行扫描,寻找较大的key,Key主要以string类型存在
redis-cli -h b.redis -p 1959 --bigkeys
2. redis的命令,可以查看某个key序列化后的长度
debug object key
3.redis rdb file的分析工具,可以根据rdb file生成内存报告
4.查看单个key
redis-memory-for-key -s b.redis -p 1959 myhash
十一、SCAN命令
SCAN --迭代当前选定的Redis数据库中的一组键
SSCAN --迭代 Sets 类型的元素
HSCAN --迭代 Hash 类型的字段及其相关值
ZSCAN --迭代 Sorted Set 类型的元素及其相关分数
语法:SCAN cursor [MATCH pattern] [COUNT count] [TYPE type]
scan 0
scan 0 match "user*" count 2 type string
sscan myset 0 match j*
hscan ranext:msgext 0
十二、Sentinel集群
1.sentinel启动
./bin/redis-sentinel 16380.conf
./bin/redis-sentinel sen_16380.conf
2.info命令
info Replication #查看主从相关信息
INFO clients #查看连接数
3.停止redis端口
redis-cli shutdown
redis-cli -p 6379 shutdown