RedisRedis操作指令学习笔记之一
Redis服务Redis基本操作redis数据类型指令字符串哈希(对象)列表 list 队列集合有序集合
【注】:此篇内容为作者整理,和官方文档可能有些差异。
(声明:本教程仅供本人学习使用,如有人使用该技术触犯法律与本人无关) (如果有错误,还希望指出。共同进步)
Redis服务
# 安装redis服务
redis-server --service-install redis.windows.conf --loglevel verbose
# 启动服务
redis-server --service-start
# 停止服务
redis-server --service-stop
# 进入 【不同的配置启动命令不同】
redis-cli
# 验证
auth <your password>
Redis基本操作
### 0-15:redis默认有16个数据库,默认是在第0个数据库中操作 ###
# 切换数据库
select num
# 所有键
keys *
# 删除键
del key
# 给指定的key添加过期时间,单位是s
EXPIRE key seconds
# 以秒为单位,返回这个键剩余的时间秒数
ttl key
# 判断一个键是否存在
exists key
# 删除当前数据库中所有的键
flushdb
# 删除所有数据库中的所有键
flushall
#修改key的名称(如果新的key的名字存在 则会把存在的key的值 覆盖掉)
rename key newkey
# 随机返回一个 key
randomkey
# 将指定键移动到指定库
move key db
redis数据类型指令
字符串
# 设置键值对
set key value
# 根据键获取对应的值
get key
# 字符串提取,字符串从0开始,包含start和end
getrange key start end
# 设置key的值,返回的是旧值,新值会设置成功
getset key value
# 设置key的值,过期时间为seconds,如果存在,替换之,时间以s为单位
setex key seconds value
# 该key不存在的时候才设置,存在不设置
setnx key value
# setrange key offset value
将该key对应的值从offset开始替换为value
# 得到该key对应的值的长度
strlen key
# 同时设置多个键值对
mset key1 value1 key2 value2 key3 value3
# 同时设置多个键值对,将键不存在的时候才设置
msetnx
# 设置键值对,时间以ms为单位
psetex key time value
# 为key对应的值增加1
# 如果key不存在,那么先创建这个key,值为0,然后设置为1
# 如果key对应的是字符串,那么报错
incr key
# 在指定的key对应的值加number
incrby key number
# 减一
decr key
# 减去指定的数量
decrby key number
# 在指定的key对应的值后面追加value
append key value
# 一次获取多个键的值
mget
哈希(对象)
# 给对应的key设置属性和属性值
hset key field value
# 该key中不存在的field才设置为value
hsetnx key field value
# 获取指定key的field属性
hget key field
# 删除对应key中指定的属性
hdel key field1 field2
# 对应的key中是否存在这个属性,存在返回1,不存在返回0
hexists key field
# 获取这个key对应的所有的属性和值
hgetall key
# 给这个key对应的属性值加减number
hincrby key field number
# 给这个key对应的属性值加减number,number为float值
hincrbyfloat key field number
# 对应的key中所有的属性名
hkeys key
# 对应的key中所有的值
hvals key
# 对应的key有多少个属性
hlen key
# 同时为key设置多个属性和属性值
hmset key field1 value1 field2 value2 ...
# 同时获取key的多个属性的值
hmget key field1 field2 ...
列表 list 队列
特点:先进先出
# 依次将value1和value2从左边插入到队列key中
lpush key value1 value2
# 依次的显示队列key中从start开始到stop结束的所有元素,start 0。。。。 stop -1代表最后一个
lrange key start stop
# 当队列key存在的时候才往队列头部插入数据,如果队列不存在,插入失败
lpushx key value
# 弹出队列key中最左边的元素
lpop key
# 将value从右边插入到队列key中
rpush key value1 value2
# 将value从右边插入到队列key中,但是前提是队列key必须存在
rpushx key value
# 将队列key中最右边的元素弹出
rpop key
# 将队列src中最右边的元素插入到队列dst中的最左边
rpoplpush src dst
# 将队列中start-stop区间之外的所有元素全部干掉,下标从0开始,闭区间
ltrim key start stop
# 将队列key中的第index个元素设置为value,下标从0开始
lset key index value
# 得到队列key中元素的个数
llen key
# 获取队列key中第index个元素
lindex key index
# 1 1 1 3 5 8 1 2 1 3 5
# 1 -3
# count > 0 从最左边开始,干掉count个和value相等的元素
# count < 0 从最右边开始,干掉-count个和value相等的元素
# count = 0 干掉队列key中所有和value相等的元素
lrem key count value
# 在队列key中的value的前面或者后面插入newvalue
# linsert key before|after value newvalue
集合
无序性、唯一性
# 往集合key中插入多个值
sadd key value1 value2 value3
# 得到集合中元素的个数
scard key
# 查看集合key中所有的元素
smembers key
# 保留key1中key2和key3没有的元素
key1不变,结果返回给你
sdiff key1 key2 key3
# 将这个(sdiff key1 key2 key3)的结果保留到集合dst中
sdiffstore dst key1 key2 key3
# 取出key1和key2的交集
sinter key1 key2
将sinter key1 key2的结果保存到集合dst中
sinterstore dst key1 key2
# 判断value在不在集合key中,在的话返回1,不在的话返回0
sismember key value
# 将集合src中的value元素移动到集合dst中
smove src dst value
# 从集合key中随机弹出一个元素
spop key
# count > 0 count < 集合元素个数: 返回你一个数组,而且数组元素唯一
# count > 集合元素个数:返回你该集合中所有的元素
# count < 0:返回给你-count个元素,但是不保证唯一
srandmember key count
# 移除集合key中的value1和value2元素
srem key value1 value2 ...
# 得到集合key1和集合key2的并集
sunion key1 key2
# 将集合key1和集合key2的并集保存到dst中
sunionstore dst key1 key2
有序集合
# 将分值为score的成员member加入到有序集合key中
zadd key score member
# 得到集合key中元素的个数
zcard key
# 得到集合key中分值在start到stop之间的元素的个数
# 闭区间 [start stop] 这个写分值
zcount key start stop
# 给集合key中指定的member元素的分值加上number
zincrby key number member
# 显示集合中的元素 start和stop是下标 0 -1
# 显示成员的时候可以显示分值
zrange key start stop [withscores]
# 按照区间去查找对应的元素 min和max 是分值
# 【注】前面的只能写数字,肯定是大于等于,后面的可以写开区间,不写默认就是闭区间
# 0 (100 0<= <100
# 0 100 0<= <=100
# 默认升序排列好
zrangebyscore key min max
# 从低到高排列,下标从0开始
# 查找member在有序集合key中的排名 显示的是下标
zrank key member
# 移除有序集合中指定的元素
zrem key member1 member2
# 查询从start到stop之间所有的元素,但是是从大到小排列
zrevrange key start stop withscores
# 用法和zrank一样,但是是从大大小排列的顺序
# 【注】得到的是下标
zrevrank key member
# 根据成绩从高到低排序,得到指定分值区间的成员
# ZREVRANGEBYSCORE salary +inf -inf # 逆序排列所有成员
zrevrangebyscore key max min
# 返回指定成员的分数
zscore key member