keys * :查看所有key
expire key值 过期时间(秒):设置过期时间
set
get
flushdb:清空当前数据库
flushall:清空所有数据库
exists key值:查看是否存在
ttl kye值:查看过期时间
事务
开启事务:multi
命令入队
执行事务:exec
放弃事务(事务中的命令都不被执行):discard
编译型异常(代码有问题 命令有错),事务中所有的命令都不被执行
运行时异常(1/0),如果事务队列中存在语法错误,那么执行命令的时候,其它命令可以正常执行,错误命令会抛出异常
type key值:看类型
appent key值 要追加的字符串:追加(如果当前key不存在则相当于set key)
STRLEN key值:获取字符串的长度
incr key值:加一
decr key值:减一
incrby key值 步长:一次增加步长
decrby key值 步长:一次减步长
GETRANGE key值 截取开始位置 截取结束位置: 截取字符串(结束位置为-1截取全部)
setrange key值 替换开始位置 替换的字符: 字符串替换
setex(set with expire) 设置过期时间
setnx(set if not exist) 不存在时在设置(在分布式锁中常使用)
mset key1 v1 key2 v2 批量设置
mget 批量获取
msetnx key1 v1 key2 v2 批量设置如果已经存在不设置(原子性操作,如果一个设置失败则全部失败)
set user:1 {name:zs ,age 2} 设置一个user:1对象 值为json对象
getset 先get在set
list类型
LPUSH key 属性 :将一个值追加列表的到头部(左)
RPUSH key 属性 :将一个值追加列表的尾部(右)
LRANGE key 显示位置 显示多少(-1全部显示)
Lpop key : 移除列表的第一个值(左)
Rpop key:一处列表的最后一个值(右)
lindex key 下标: 根据下标获取值
Llen :返回列表的长度
Lrem key 移除的个数 要移除的值 :移除指定的值
Ltrim key 截取开始索引 截取结束索引: 通过下标截取指定的长度,截断了 只剩下截取的元素
rpopLpush 移除列表中的最后一个元素,将他移动到新的列表中
lset key 下标 要替换的元素:将列表中下标的值替换为另一个(必须存在列表)
linsert key before|after “存在的字符串” “插入的字符串
Set类型(无需不重复集合)
Sadd key 成员:添加set类型
SMEMBERS key :查看set类型
SISMEMBER key 成员: 判断成员是否存在
scard key:查看set集合中内容元素的个数
srem kye 要移除的值: 移除set元素中的某一个值
SRANDMEMBER key:Set类型(无需不重复集合)Set类型(无需不重复集合抽随机)
spop key:随机删除一些set 集合中的元素
smove 要移动的key 目标key 要移动的元素 :将一个指定的值移动到另一个set集合中
sdiff key1 key2: key1和key2的差集
SINTER key1 key2: 交集
SUNION key1 key2:并集
Hash()哈希类型
hset key field value: set一个具体的key-value
hget key filed: 获取一个具体的key-value
hmset key field value field value…:set多个具体的key_value
hmget key filed filed …:获取多个具体的key-value
hgetall key:获取全部 数据
hdel key filed:删除指定的hash key字段 对应的value值也就消失了
hlen key:获取hash的字段数量
HEXISTS key filed:判断hash中的指定字段是否存在
hkeys key: 只获得所有的field
hvals key:只获得所有的value
HINCRBY key field 增量 :指定增量
hsetnx key field value:如果不存在可以设置 如果不存在则不可以设置
Zset(有序集合)
在set的基础上,增加了一个值 ,set k1 v1 zset k1 score1 v1
zadd key scorce value:添加一个值
zadd key scorce values scorce value:天机多个值
ZRANGE key 0 -1:查看全部
ZRANGEBYSCORCE key min max(ZRANGEBYSCORCE key -inf +inf 最小值到最大值排序) :排序从小到大
ZREVRANGE key 0 -1:从大到小排序
ZRANGEBYSCORCE key min max withscores(with参数):显示全部 并且显示成绩
ZRANGEBYSCORCE salary -inf 2500 withscores:显示工资小于2500员工的升序排序
zrem key meber:移除元素
zcard key:查看有多少元素
zcount key start end:起始位置到结束位置的元素数(包含两边)
三种特殊数据类型
geospatial 地理位置 两级没办法添加我们一般会下载城市数据,直接java程序一次性导入
有效的经度-180度到180度
有效的纬度-85.05112878度到85.05112878度
geoadd key 经度 纬度 名称 :添加地理位置 如( geoadd chian:city 166.40 39.90 beijing)
geoadd key 经度 纬度 member 经度 维度 member:批量添加地理位置
geopos key 名称:获取经度纬度
geopos key 名称 名称:批量获取经度纬度
geodist:
两人之间的距离
m 表示单位米
km 表示单位千米
mi表示单位为英尺
ft表示单位为英尺
geodist key 城市1 城市2 单位:查看两个城市之间的距离
geodist chian:city beijing chongqing km:查看北京到重庆的直线距离 单位千米
georadius以给定的经度为中心,找出某一半径内的元素
georadius key 经度 纬度 半径 单位:查询固定半径内的位置
georadius chian:city 110 30 1000 km:查询在这个经纬度半径1000km的城市
georadiusbymember key 名称 半径 单位:
georadiusbymember chian:city shanghai 2000 km:查看距离上海2000km的城市
geohash 返回一个或多个位置元素的geohash表示
该命令将返回11个字符串的geohash字符串
geohash key 名称:将二维的经纬度转化成一维的字符串,如果两个字符串越相似,则越相近
geo底层为zset
通过Zrange key 0 -1;查看全部
Hyperloglog基数统计的算法(错误率0.81% 如果不允许容错就用set类型即可 只需要废12kb内存)
pFaddd key 元素:添加元素
PFCOUT key :查看元素个数
pfmerge key 要合并的key1 要合并的key2:将两个Hyperloglog类型合并成1个
Bitmaps
位存储
setbit key offset val:设置值
getbit key offset :获取对应offset位置的值
bitcount key :查看val为1的数量
Redis单条命令保证原子性,但是事务不保证原子性
乐观锁
watch key:监视key对象
unwatch:放弃监视 (如果发现事务失败 就先解锁)
config get requirepass:获取密码(默认为空)
config set requirepass 密码:设置密码
auth 密码:验证密码(设置密码后不登录 所有命令失效)
消息队列
PSUBSCRIBE pattern :订阅一个或多个符合给定模式的频道
PUBSUB subcommand:查看订阅与发布系统状态
SUBSCRIBE channel:订阅给定的一个或多个频道的信息
PUBLISH channel message :将信息发送到指定的频道
UNSUBSCRIBE :退订给定的频道SU
集群
通过命令
info replication #查看当前库的信息
一主二从(认老大 主机不需要配置,从机配置)
SLAVEOF 127.0.0.1(哪个主机) 6379(哪个端口):从机配置
也可更改配置文件
更改配置文件REPLICATION 中replicaof
如果主机断开了连接我们可以使用 SAVEOF no one让自己变成主机!其它的节点就可以手动连接到最新的这个主节点
哨兵模式
1.配置哨兵
#sentinel montitor 被监控的名称 host port 1:后面的这个数字1,代表主机挂了,slave投票看让谁接替成为主机,票数最高的,就会成为主机
在sentinel.conf 中编写sentinel montitor myredis 127.0.0.1 6379 1
2.启动哨兵
#redis-sentinel 哨兵配置文件的位置
redis-sentinel kconfig/sentinel.conf