本文的核心内容:了解Redis的特点、Redis的基本指令、Redis的基本数据类型与指令操作。
一:什么是Redis
Redis 是一个开源免费的基于内存的key-value存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如:字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets)等。 Redis特性丰富,客户端支持现阶段流行的大多数编程语言。
Redis的特点:
1. Redis是一个高性能的key/value内存型数据库
2. Redis数据类型丰富(string、list、set、zset、hash等)
3. Redis支持数据持久化(AOF和RDB两种持久化方式)
4. Redis读写性能优异,单线程运行效率高
二:Redis的基本操作命令 【只需要记住常用的指令即可,红色标记为重要指定必须记住】
连接redis
redis-cli -h ip -p port [客户端连接redis可以指定主机-h xxx.xxx.xxx、端口号-p xxxx。]
①:对数据库的操作指令
1.选择数据库
select index[0-15]
注意:redis默认会存在16个数据库库,编号从0-15,默认使用0号数据库
2. 数据库操作
清空当前数据库数据 flushdb
清空所有数据库数据 flushall
②:对数据库key的操作【重要的指令以红色标注】
1.del key1 key2 ... Keyn
作用: 删除1个或多个键
返回值: 不存在的key忽略掉,返回真正删除的key的数量
2.rename key newkey
作用: 给key赋一个新的key名
注:如果newkey已存在,则newkey的原值被覆盖
3.move key db
作用:移动key到指定数据库
返回值: 移动成功返回1,失败则返回0
4.keys pattern
作用:查找所有符合给定模式pattern 的key
keys * 匹配数据库中所有key
keys h?llo 占位匹配符合条件一个字符key,如:hello、hallo 和hxllo 等
kyes h*llo 通配匹配一个或者多个字符key,如:hllo 和heeeeello 等。
keys h[ae]llo 选择匹配一个或者多个字符key,如:hello和hallo
特殊符号用 \ 隔开
返回值:符合条件的key列表
5.randomkey
作用:返回随机 key
返回值:数据库为空返回nil,不为空返回key名
6.exists key
作用:判断key是否存在
返回值:存在返回1,不存在返回0
7.type key
作用:返回key存储的值的类型
返回值:string,list,set,order set,hash
8.ttl key
作用:查询key的生命周期
返回值:当key 不存在时,返回-2
当key 存在但没有设置剩余生存时间时,返回-1
否则,以秒为单位,返回key 的剩余生存时间
9.expire key
作用:设置key的生命周期,以秒为单位
返回值:如果生存时间设置成功,返回1
当key 不存在或没办法设置生存时间,返回0
同理:
pexpire key 毫秒数,设置生命周期
pttl key,以毫秒返回生命周期
10.persist key
作用:把指定key置为永久有效
三:redis基本数据类型的操作指令
【指令虽然工作中并不常用,但是使用Jedis API操作redis数据库,方法名与指令一致。记住指令有利于掌握Jedis的使用。】
String类型:
命令 |
说明 |
set |
设置一个key/value |
get |
根据key获得对应的value |
mset |
一次设置多个key value |
mget |
一次获得多个key的value |
getset |
获得原始key的值,同时设置新值 |
strlen |
获得对应key存储value的长度 |
append |
为对应key的value追加内容 |
getrange |
截取value的内容 |
setex |
设置一个key存活的有效期(秒) |
psetex |
设置一个key存活的有效期(豪秒) |
setnx |
存在不做任何操作,不存在添加 |
msetnx |
可以同时设置多个key,只有有一个存在都不保存 |
decr |
进行数值类型的-1操作 |
decrby |
根据提供的数据进行减法操作 |
Incr |
进行数值类型的+1操作 |
incrby |
根据提供的数据进行加法操作 |
Incrbyfloat |
根据提供的数据加入浮点数 |
List类型【双向链表,可以从两边插入数据,维护顺序】
命令 |
说明 |
lpush |
将某个值加入到一个key列表头部 |
lpushx |
同lpush,但是必须要保证这个key存在 |
rpush |
将某个值加入到一个key列表末尾 |
rpushx |
同rpush,但是必须要保证这个key存在 |
lpop |
返回和移除列表的第一个元素 |
rpop |
返回和移除列表的第一个元素 |
lrange |
获取某一个下标区间内的元素 |
llen |
获取列表元素个数 |
lset |
设置某一个指定索引的值(索引必须存在) |
lindex |
获取某一个指定索引位置的元素 |
lrem |
删除重复元素 |
ltrim |
保留列表中特定区间内的元素 |
linsert |
在某一个元素之前,之后插入新元素 |
Set类型【元素无序,不能重复】
命令 |
说明 |
sadd |
为集合添加元素 |
smembers |
显示集合中所有元素 无序 |
scard |
返回集合中元素的个数 |
spop |
随机返回一个元素 |
smove |
从一个集合中向另一个集合移动元素 |
srem |
从集合中删除一个元素 |
sismember |
判断一个集合中是否含有这个元素 |
srandmember |
随机返回元素 |
sdiff |
去掉第一个集合中其它集合含有的相同元素 |
sinter |
求交集 |
sunion |
求和集 |
Zset类型
命令 |
说明 |
zadd |
添加一个有序集合元素 |
zcard |
返回集合的元素个数 |
zrange |
返回一个范围内的元素 |
zrangebyscore |
按照分数查找一个范围内的元素 |
zrank |
返回排名 |
zrevrank |
倒序排名 |
zscore |
显示某一个元素的分数 |
zrem |
移除某一个元素 |
zincrby |
给某个特定元素加分 |
Hash类型
命令 |
说明 |
hset |
设置一个key/value对 |
hget |
获得一个key对应的value |
hgetall |
获得所有的key/value对 |
hdel |
删除某一个key/value对 |
hexists |
判断一个key是否存在 |
hkeys |
获得所有的key |
hvals |
获得所有的value |
hmset |
设置多个key/value |
hmget |
获得多个key的value |
hsetnx |
设置一个不存在的key的值 |
hincrby |
为value进行加法运算 |
hincrbyfloat |
为value加入浮点值 |