一、redis基础
1.0 redis key操作指令
#redis 客户端显示中文
redis-cli --raw
#选择库,默认是0 最大为15 可以修改
select 0-15
#redis中清除库的指令
#清空当前库
flushDB
#清空所有库
flushall
# set
set key value
# del删除指令,删除一个或多个key
del key
#exists 指令 检查指定key是否存在
exists key
#expire 为给定的key 设置生存时间 当key过期时 会被自动删除
expire key seconds
#keys 查询所有符合给定模式pattern 的key
keys * #匹配所有
keys h?llo #匹配hello hallo hsllo等 匹配一个字符
keys h*llo #匹配hllo 和heeeello等 匹配多个任意字符
keys h[ae]llo#匹配hello hallo 匹配指定字符
# move key 库下标 将指定的key移动到指定的库
move key 1
# pexpire 和expire命令相似,但是它以毫秒为单位对key设置生存时间,version >2.6.0时生效
pexpire name 100 # 设置name的生存时间为 100毫秒
# pexpireat 以毫秒为单位的时间戳设置key的生存时间, >= 2.6.0
pexpireat name milliseconds-timestamp
# ttl 以秒为单位,返回给定key的剩余生存时间 当key不存在时返回 -2 当key存在但没有设置生存时间时 返回 -1
ttl name
#pttl 和ttl类似,返回的是毫秒
pttl name
#randomkey 随机从key中取出一个
randomkey
# rename key newkey 修改key 的名称
rename name name1
#type 返回key所存储的值的类型。
string 字符串
list 列表
set 集合
zset 有序集合
hash 哈希表
1.1 string类型
# 设置key和生存时间 秒
setex name 100
#设置key和生存时间 毫秒
psetex name 100000
# setnx如果key存在,不做操作,如果不存在直接添加
setnx name wangyu
#msetnx 一次性设置多个key 如果key存在,不做操作,如果都不存在直接添加 原子操作
msetnx name 张三 age 19 #name存在不能执行
msetnx address 成都 age 19 #都不存在,可以执行
#mset 设置多个值
mset name zhangsan age 18
#mget 获取多个值
mget name age
#strlen 获取value值的长度
strlen name
#append 追加字符串
append name 123 # get name ==> zhangsan123
#getrange 索引从0开始截取value内容
getrange name 0 3 # zhan
getrange name 3 -1 # ngsan123
#decr 进行数值类型-1操作
decr age
#decy by
decrby age 5 #减5岁
#incr +1操作
incr age # +1岁
incrby age 10 #加十岁
1.2 list类型
list集合和java中的集合类似,但是redis中的list类型有序可重复,可以通过lpush从左边加入 也可以通过rpush从右边加入。
# lpush 将某个值加入到一个key列表头
lpush lists zhangsan lisi wangwu
# lpushx 同lpush,但是必须要保证这个key存在
lpushx lists zhangsan1 # lrange 显示 zhangsan1 zhangsan lisi wangwu
# rpush 将某个值加入到一个key列表末尾
rpuch lists aa bb cc # aa bb cc
# rpushx 同rpush,但是必须要保证这个key存在
rpushx lists dd # aa bb cc dd
# lpop 返回和移除列表第一个元素
lpop lists # bb cc dd
# rpop 返回和移除列表末尾第一个元素
rpop lists # bb cc
# lrem 删除重复元素
lrem list 1 ee #删除list中1 个重复的ee
# lindex 获取某一个指定索引位置的元素
lindex list 1 # bb
# llen 获取列表元素个数
llen list
# lrange listname 下标从0开始
lrange list 0 -1 # 第一位到最后一位
# linsert 在某个元素之前插入一个元素
linsert list before ee gg
1.3 set类型
特点:set类型,类似java Set集合,元素无序,不可以重复
# 创建set集合
sadd sets zhangsan lisi wangwu zhangsan # 重复的元素会被默认覆盖
# 遍历set
smembers sets
# 返回集合中的元素个数
scard sets
# 返回并移除元素
spop sets #随机返回并移除一个元素
# 从一个集合中想另一个集合移动元素(必须是同类型集合 list不能移动到set)
sadd ages 18 19 20
smove ages sets zhangsan #将sets中的张三移动到ages中
# sismember 判断集合中是否存在该元素
sismember sets zhangsan
# srandmember 随机返回集合中的一个元素
srandmember sets
# sdiff 去掉第一个集合中其他集合含有相同的元素
saddr set1 zhangsan lisi wangwu wangyu
saddr set2 xiaohei lisi zhangsan wangxiaoer
sdiff set1 set2 # 去掉set1中set2集合包含的相同的元素 zhangsan lisi
# 求集合的交集
sinter set1 set2
# 求和集/并集
sunion set1 set2 #两个集合合并并去重
1.4 zset 类型
set类型的变种,类似于java中的treeset 排序 不可重复 。
可排序set、sortset,排序方式:集合中的每个元素都带有一个分数,按照分数排序
#添加一个有序集合
zadd zstes 10 zhangsan 9 xiaoli 8 xiaozhang 100 laowang
#返回有序集合个数
zcard zsets # 4
#返回一个范围内的元素
zrange zsets 0 -1 #升序从头到尾所有元素 laozhang xiaoli zhangsan laowang
zrange zsets 0 -1 withscores # 升序从头到尾所有元素并携带分数
zrevrange zsets 0 -1 # 降序
zrevrange zsets 0 -1 withscores # 带分数降序
# 按照分数查找一个范围内的元素
zrangebyscore zsets 10 100 # zhangsan laowang
# 返回排名
zrank zsets laowang # 3
zrank zsets zhangsan # 2
#倒序排名
zrevrank zsets zhangsan # 1
zrevrank zsets laowang # 0
# 查看某个元素的分数
zscore zsets zhangsan # 10
# zrem 删除某个元素
zrem zsets xiaoli # 1
# 给某个特定元素加分
zincrby zsets 50 zhangsan #zhangsan加50分
1.5 hash类型
redis key (string ) value (map) key无序
类似于java中的map
# hset 设置一个key/value对
hset maps name zhangsan
# hget 获取一个key对应的value
hget maps name # zhangsan
# hgetall 遍历map
hgetall maps # name zhangsan age 19
# hdel 删除某个key
hdel maps name
# hexists判断一个key是否存在
hexists maps name
# hkeys 获得所有的Key
hkeys maps
# hvals 获得所有的value
hvals maps
# hmset 设置多个键值对
hmset maps address cd gender 1
# hmget 获取多个值
hmget name age gender
# hsetnx 设置一个不存在的键值
hsetnx name zhangsan # 不成功
hsetnx course redis # 成功
# hincrby 为value 进行加法运算,value必须是数值类型
hincrby maps age 10 #增加十岁 29
# hincrbyfloat 为value加入浮点值
hincrbyfloat