Redis 是 key-value 数据库
数据持久化
支持多种数据结构
支持数据备份
前台启动
redis-server
后台启动
redis-server &
指定配置文件启动
redis-server /etc/redis.conf &
通过 kill 命令
ps -ef | grep redis # 查看 pid kill -9 pid
通过 redis-cli 命令关闭
redis-cli shutdown
不需要账号密码就能连接,只需要给出 IP 和端口
作用
通过网络连接到 Redis 服务器,从而实现跟 Redis 服务器的交互
redis-cli 是 redis 自带的客户端,使用 redis-cli 就可以启动 redis 的客户端程序
默认连接本机上 6379 端口上的 redis 服务
指定 redis 端口
redis-cli -p 6380
连接指定机器上的 redis 服务
redis-cli -h ip -p port
exit
或
quit
自带的性能测试工具,可以测试每十万次操作所耗的时间
redis-benchmark
查看 redis 服务是否正常开启
ping
正常的话会返回 pong
查看 redis 服务器的统计信息
查看全部
info
查看指定信息
info [信息段]
查看集群信息
info Replication
Redis 启动后会自动创建十六个数据库,你爱用不用
Redis 中的数据库实例只能由 redis 服务来创建和维护,开发人员不能自行创建和修改数据库实例
Redis 创建的数据库实例中编号为 0-15,开发人员使用时通过编号来使用
可以通过配置文件来指定 Redis 创建的数据库个数
Redis 创建的数据库实例占用的存储空间很小,所以不会造成太多的存储空间的浪费
默认情况下,客户端连接的是 0 号数据库实例
切换数据库
select databaseIndex
查看当前数据库有多少条数据(key)的数量
dbsize
查看当前数据库实例中所有的 key
keys *
清空当前数据库实例
flushdb
清空所有的数据库实例
flushall
查看 Redis 中所有的配置信息
config get *
查看 Redis 的端口号
config get port
对 Redis 来说,所有的键都是字符串
String 字符串类型
String类型是二进制安全的,意思是 redis 的 string 可以包含任何数据。如数字,字符串,jpg图片或者序列化的对象。但最大是 512 m
Hash 哈希
是一个 HashMap,本身是键-值对结构
List 双端链表
是有序的,value 可重复,可以通过下标取出对应的 value 值,左右两边都能进行插入和删除数据
Set 集合
集合类型也是用来保存多个字符串的元素,但和列表不同的是集合中
Zset 有序集合
有序集合和集合有着必然的联系,保留了集合不能有重复成员的特性,区别是,有序集合中的元素是可以排序的,它给每个元素设置一个分数,作为排序的依据。
(有序集合中的元素不可以重复,但是score 分数 可以重复,就和一个班里的同学学号不能重复,但考试成绩可以相同)
都是针对 数据类型 来设计的
有关 key 的操作命令
查看 key
keys pattern
Pattern 可使用通配符
通配符:
通配符 | 描述 |
---|---|
* | 0 到多个字符 |
? | 单个字符 |
[] | 选择[]内的一个字符,例如wo[or]d,匹配word,wood,但不匹配world,woord |
查看以 k 开头的 key
keys k*
判断 key 在数据库中是否存在,存在回 1,不存在回 0
exists key
判断制定的多个 key 有多少个是存在的,返回值是存在的 key 的数量
exists k1 k2 k3
移动某个 key 到某个数据库中,这里 index 表示数据库编号
move k1 index
设置 key 的生存时间
expire key seconds
查看 key 的剩余生存时间
ttl key
如果没设置生存时间返回 -1 ,如果 key 不存在则返回 -2
查看 key 的数据类型
type k1
重命名 key
rename oldKey newKey
删除制定 key
del k1
删除多个 key,返回值是实际删除的数量
del k1 k2 k3
关于 string 类型数据的操作命令
将 string 类型的数据设置到 redis 中,如果 key 已存在,则会把原来的 key 覆盖掉
set 键 值
从 redis 中获取 string 类型的数据
get zsname
追加字符串,返回值是追加后字符串的长度
append key value
如果 key 不存在就会相当于 set
获取字符串数据的长度
strlen key
将字符串数值进行 +1 ,返回值是 +1 后的结果
incr key
如果 key 不存在,首先设置一个 key,值初始化为 0 ,然后进行 incr 运算,要求 key 所表示的 value 必须是数值,否则报错
同理,对字符串数值 -1
desc key
引申,将字符串数值进行 + offset
incrby key offset
同理进行 - offset 操作
descby key offset
获取字符串的子字符串,索引从 0 开始,闭区间
getrange key startIndex endIndex
getrange zsname 0 -1
用 value 覆盖从下标为 startIndex 开始的字符串,返回更改后的字符串,能覆盖几个字符就覆盖几个字符
setrange key startIndex value
设置字符串同时,设置他的最大生命周期
setex key seconds value
安全设置 key,当以前 key 不存在时才会进行设置
setnx key value
批量将 string 类型的数据设置到 redis 中
mset key1 value1 key2 value2 key3 value3
批量从 redis 中获取 string 类型的数据,不存在时返回 nil
mget key1 key2 ley3
对应地有 msetnx
关于 list 的操作命令
特征:单 key - 多 value,事实上 value 的下标从 0 开始
一个 key 对应多个 value ,多个 value 之间有顺序,最左侧是表头,最右侧是表尾,但是每个元素的下标可以用负数来表示
使用情况:一个key 对于多个 value
将一个或多个值依次插入到列表的表头,类似链表的添加到表头,返回成功插入的个数
lpush key v1 v2 v3
获取指定列表中指定下标区间的元素,支持负数索引
lrange key startIndex endIndex
注意,输出结果为 v2 v1
对应地,插入到表尾
rpush key v1 v2 v3
从指定列表中移除并返回表头元素
lpop key
获取指定列表中指定下标的元素
lindex key index
获取指定列表的长度
llen key
从指定列表移除并返回表尾元素
rpop key
根据 count 值移除指定列表中跟 value 相等的数据
lrem key count value
将 value 插入到列表中位于 pivot 元素之前或之后的位置
linsert key before/after pivot value
关于 set 类型的数据的操作命令
特点:单 key - 多无序 value
将一个或多个元素添加到指定的集合,如果元素已经存在则忽略,返回成功加入的元素个数
sadd key v1 v2 v3
获取指定集合的所有元素
smembers key
判断指定元素在指定集合中是否存在,存在回 1 ,不存在回 0
sismember key member
获取指定集合的长度
scard set01
移除指定集合中一个或多个元素。不存在的话回忽略,返回成功移除的元素个数
srem key member1 member2 member3
随机获取集合中一个或多个元素,如果 count > 0 则随机获取的元素不重复,如果 count < 0 则获取的元素可能重复
srandmember key [count]
从指定集合中随机移除一个或者多个元素
spop key [count]
把元素从一个集合移到另一个集合
smove source dest member
获取一个集合里有,但是其他集合中都没有得元素组成的新集合
sdiff key key [key...]
获取所有集合的交集
sinter set01 set02 [set03...]
获取所有指定集合中所有元素的大集合
sunion key key [key...]
关于 hash 类型的数据的操作命令
hash 类型数据:单 key : field-value
Redis 中的 hash 是一个 string 类型的 key 和 vaue 的映射表,这里的 value 是一系列的键值对,所以 hash 特别适合存储对象
hash 类型的数据的操作总的思想是通过 key 和 field 操作 value ,key 是数据标示,field 是域,value 是我们感兴趣的业务数据
将一个或者多个 fileld - value 对设置到哈希表中
hset key fild_1 value_1 [field_2 value_2 ...]
或。。。其实就看个人习惯
hmset key field_1 value_1 [field_2 value_2 ...]
获取指定哈希表中指定 field 的值
hget key field
批量获取指定哈希表的 field 的值
hmget key field_1 [field_2 ...]
获取指定哈希表中所有的 field 和 value
hgetall key
从指定哈希表中删除一个或多个 field
hdel key field_1 [field_2 ...]
获取指定哈希表中所有的 field 个数
hlen key
判断一个哈希表中是否存在某一个 field ,存在回 1 ,不存在回 0
hexists key field
获取指定哈希表中所有的 field 列表
hkeys key
获取指定哈希表中所有的 value 列表
hvals key
对指定哈希表中指定的 field 值进行加法运算
hincrby key field Int
对着指定哈希表中指定 field 值进行浮点数加法运算
hincrbyfloat key field float
将一个 field - value 对设置到哈希表中,当 key - field 已经存在时,则放弃设置;否则,设置
hsetnx key field_1 value_1
关于 zset 类型数据的操作命令