数据库操作指令
查看当前数据库中的所有键 key *
1.对于一个redis服务而言,包含默认有16个数据库给我们使用,从0开始编号,共15号数据库,默认使用的是0号数据库
切换库,select 库号 举例:使用1号库:select 1
库和库之间数据不共享
库和库之间的键可以重名
2.Redis中清空库的指令
- 清空当前的库 FLUSHDB
- 清空全部的库 FLUSHALL
3.redis客户端显示中文 连接可以在任意目录下进行连接,启动服务器时时=是在哪个文件下则该文件就是数据库,保证端口号不同有多个redis数据库
redis-cli -p 7000 --raw
操作key相关指令(分别演示案例)
1.DEL指令
- 语法 : DEL key [key ...]
- 作用 : 删除给定的一个或多个key 。不存在的key 会被忽略。多个key之间使用空格隔开
- 可用版本: >= 1.0.0
- 返回值: 被删除key 的数量
get name
set age 18
set sex 男
set salary 23152
keys *
del sex age work
# 2.EXISTS指令
- 语法: EXISTS key [key ...]
- 作用: 检查给定key 是否存在。多个key之间使用空格隔开,只要有一个key存在,返回值就是1 新版本中会提示几个键存在
- 可用版本: >= 1.0.0
- 返回值: 若key 存在,返回的是存在的个数。
exists name age sex worker --3
# 3.EXPIRE 只能对已经存在的key设置过期时间(重要)
- 语法: EXPIRE key seconds
- 作用: 为给定key 设置生存时间,当key 过期时(生存时间为0 ),它会被自动删除。
- 可用版本: >= 1.0.0
- 时间复杂度: O(1)
- 返回值:设置成功返回1 。
# 5.MOVE
- 语法 : MOVE key db (move name 1----将name键移动到1号库)
- 作用 : 将当前数据库的key 移动到给定的数据库db 当中。
- 可用版本: >= 1.0.0
- 返回值: 移动成功返回1 ,失败则返回0 。
# 6.PEXPIRE
- 语法 : PEXPIRE key milliseconds
- 作用 : 这个命令和EXPIRE 命令的作用类似,但是它以毫秒为单位设置key 的生存时间,而不像EXPIRE 命令那样,以秒为单位。
- 可用版本: >= 2.6.0
- 时间复杂度: O(1)
- 返回值:设置成功,返回1 key 不存在或设置失败,返回0
# 7.PEXPIREAT
- 语法 : PEXPIREAT key milliseconds-timestamp
- 作用 : 这个命令和EXPIREAT 命令类似,但它以毫秒为单位设置key 的过期unix 时间戳,而不是像EXPIREAT那样,以秒为单位。
- 可用版本: >= 2.6.0
- 返回值:如果生存时间设置成功,返回1 。当key 不存在或没办法设置生存时间时,返回0 。(查看EXPIRE 命令获取更多信息)
# 8.TTL(time to live)
- 语法 : TTL key
- 作用 : 以秒为单位,返回给定key 的剩余生存时间(TTL, time to live)。
- 可用版本: >= 1.0.0
- 返回值:
当key 不存在时,返回-2 。
当key 存在但没有设置剩余生存时间时,返回-1 。
否则,以秒为单位,返回key 的剩余生存时间。
- Note : 在Redis 2.8 以前,当key 不存在,或者key 没有设置剩余生存时间时,命令都返回-1 。
# 9.PTTL
- 语法 : PTTL key
- 作用 : 这个命令类似于TTL 命令,但它以毫秒为单位返回key 的剩余生存时间,而不是像TTL 命令那样,以秒为单位。
- 可用版本: >= 2.6.0
- 返回值: 当key 不存在时,返回-2 。当key 存在但没有设置剩余生存时间时,返回-1 。
- 否则,以毫秒为单位,返回key 的剩余生存时间。
- 注意 : 在Redis 2.8 以前,当key 不存在,或者key 没有设置剩余生存时间时,命令都返回-1 。
# 10.RANDOMKEY
- 语法 : RANDOMKEY
- 作用 : 从当前数据库中随机返回(不删除) 一个key 。
- 可用版本: >= 1.0.0
- 返回值:当数据库不为空时,返回一个key 。当数据库为空时,返回null 。
# 12.TYPE
- 语法 : TYPE key
- 作用 : 返回key 所储存的值的类型。
- 可用版本: >= 1.0.0
- 返回值:
none (key 不存在)
string (字符串)
list (列表)
set (集合)
zset (有序集)
hash (哈希表)
String类型(分别演示)
- 内存存储模型
点击查看代码
set name 张三
set age 19
set bir 2002-12-12
set salary 20000
keys *
get name
get age
get bir
get salary
mset name 王骏 age 17 bir 2002-02-25 salary 30000
mget name age bir salary
getset name lina
getset age 22
getset bir 2003-02-04
getset salary 23000
mget name age bir salary
strlen bir
append name 娜
set name 李娜
append name 娜
get name
set hobby whoareyou
getrange hobby 6 8
setex yzm 60 1234
get yzm
ttl yzm
get age
decr age
decrby age 9
incrby age 22
get salary
incrbyfloat salary 500.5
List类型
list 列表 相当于java中list 集合 特点 元素有序(插入和取出的顺序一致) 且 可以重复,key还是一个字符串,值是一个list
点击查看代码
--list
lpush list1 wangjun lina zhangsan
--从左往右放入集合
llen list1
lrange list1 0 2
lpop list1
rpop list1
-- 取右边的
--先进后出: 模拟进栈出栈
rpush list2 zhangsan lisi wangwu
--从右往左放入
llen list2
lrange list2 0 4
rpop list2
--取出数据
--删除表
del list1
del list2
--从左边放入
lrange list1 0 2
--从右边开始取出
rpush list1 wangjun
--取出对应区间的的元素(索引)
lrange list1 0 2
--设置指定索引上的元素
lset list1 2 wangxiaojian
lrange list1 0 2
lpush list1 wangjun
lrange list1 0 10
--删除list1 表中wangjun这条数据 1,2,3 ... 一次,二次,三次 0 是指所有的重复元素
lrem list1 2 wangjun
-- 获取指定位置上的元素
lindex list1 1
--保存列表中特定区间的元素
ltrim list1 0 2
lpush list1 zhangsan lisi wangwu liuliu
lrange list1 0 10
--在某一个元素之前添加一个(后面的需要添加的元素)
linsert list1 before liuliu menjingsuo
--在某一个元素之前添加一个(后面的需要添加的元素)
linsert list1 after liuliu girl
Set类型
特点: Set类型 Set集合 元素无序 不可以重复
常用命令 (如果set集合没有元素,key也就不存在了)
点击查看代码
--set集合
--为集合添加元素
sadd set1 唱歌 跳舞 跑步 打羽毛球
--显示集合中所有元素(无序)
smembers set1
--从集合中删除一个元素
srem set1 like
--返回集合中元素的个数
scard set1
--随机返回一个元素,并将元素在集合中删除
spop set1
smembers set1
sadd set1 打篮球
sadd set2 洗脚 泡澡
--从一个集合向另外一个集合移动元素 =,必须是同一类型
smove set1 set2 打篮球
smembers set2
--判断一个集合中是否含有这个元素
sismember set1 泡脚
sismember set2 洗脚
--随机返回元素后面叫数字表示每次返回的个数
srandmember set1 2
--去掉第一个第一个集合中其他集合含有的相同元素
sdiff set1 set2
sadd set1 泡澡
smembers set1
sdiff set1 set2
--求交集
sinter set1 set2
--求合集
sunion set1 set2
ZSet类型
特点: 可排序的set集合 排序 不可重复
点击查看代码
--zadd
-- 添加一个有序集合
zadd zset1 1 wangjun 3 lina 2 zhangsan 5 lisi 4 zhaoyun 10 nana
--返回集合的个数
zcard zset1
--返回一个范围内元素 ,查看升序分数
zrange zset1 0 5
--返回一个范围内元素 ,查看降序分数
zrevrange zset1 0 5
--按照分数查找一个范围内的元素 0 100 分数应该在范围内不然无法显示
--查看所有 没有限制
zrangebyscore zset1 0 100 withscores
--有限制前闭后开
zrangebyscore zset1 0 100 withscores limit 0 3
--从0开始升序排序 --0
zrank zset1 wangjun
-- 倒序排名--5
zrevrank zset1 wangjun
--显示指定元素的分数
zscore zset1 nana
--移除指定元素
zrem zset1 lisi
zrange zset1 0 20
--给某个元素加分
zincrby zset1 10 lina
hash类型
特点: value 是一个map结构 存在key value key 无序的
redis key(String) value(map)
Map<String,Map<String,value>> map
举例:map name zhangsan
-hash 大key 是hash1 多个小key name age content address
hset hash1 name xiaohu age 18 content 数加科技 address 安徽省合肥市
hset hash2 name 樱桃 price 98 description 相当好吃 address 水果店
--获取 一个key对应的值
hget hash1 name
--获取所有的key/value
hgetall hash1
hgetall hash2
--删除一个键值对
hdel hash2 price
--判断一个key是否存在
hexists hash1 name
--获取所有的key
hkeys hash1
--获取所有的值
hvals hash1
--设置多个keyvalue
hmset hash3 name wangjun sex 男 clazz 大数据一班
--获取多个key的value
hmget hash3 name sex clazz
hgetall hash2
--为value做加法运算(只针对数值)
hincrby hash1 age 10
hgetall hash1
--为value加上浮点型
hincrbyfloat hash2 price -10