Redis的基本使用+Redis的常用命令与使用环境

redis入门

了解什么是redis 简单的学习redis的使用

了解常用的redis命令,和redis命令的使用场景

redis简介

Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库。

Redis 与其他 key - value 缓存产品有以下三个特点:

  • Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用
  • Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储
  • Redis支持数据的备份,即master-slave模式的数据备份

master-slave模式:核心思想是基于分而治之的思想,将一个原始任务分解为若干个语义等同的子任务,并由专门的工作者线程来并行执行这些任务,原始任务的结果是通过整合各个子任务的处理结果形成的.主要的使用场景

  • 并行计算,以提升计算性能
  • 容错处理,以提升计算的可靠性
  • 计算精度,以提高计算的精确程度

Redis 优势

  • 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
  • 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
  • 原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。
  • 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。

Redis与其他key-value存储有什么不同?

  • Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象
  • Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,因为数据量不能大于硬件内存。在内存数据库方面的另一个优点是,相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,这样Redis可以做很多内部复杂性很强的事情。同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问。

基本数据结构解释

基本数据结构解释
字符串类型(String)string 是 redis 最基本的类型,可以看成与Map中的一模一样的数据类型,一个 key 对应一个value。string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象。
列表(list)Redis 的列表类型( list 类型)可以 存储一个有序的字符串列表 ,常用的操作是向列表两端添加元素,或者获得列表的某一个片段
集合(set)集合类型的常用操作是向集合中加入或删除元素、判断某个元素是否存在等,由于集合类型的 Redis 内部是使用值为空的散列表实现,所有这些操作的时间复杂度都为 o(1)
有序集合(sorted set)在 set 集合类型的基础上,有序集合类型(sorted set)为集合中的每个元素都 关联一个分数 ,这使得我们不仅可以完成插入、删除和判断元素是否存在在集合中,还能够获得分数最高或最低的前N个元素、获取指定分数范围内的元素等与分数有关的操作。
散列(Hash)hash叫散列类型,它提供了字段和字段值的映射。字段值只能是字符串类型,不支持散列类型、集合类型等其它类型。相当于一个key对应一个map。

redis中可执行的文件

文件名解释
redis-serverRedis服务器
redis-cliRedis命令行客户端
redis-benchmarkRedis性能测试工具
redis-check-aofAof文件修复工具
redis-sentinelSentinel服务器
redis-check-rdbrdb文件修复工具
mkreleasehdr.sh编译redis源码时需要用到的一个脚本
redis-trib.rb官方提供的Redis Cluster的管理工具,因该工具是用ruby开发的,所以需要安装ruby环境。

redis的配置文件

文件名解释
redis.confRedis核心配置文件
sentinel.confRedis sentinel 哨兵配置文件

在使用Redis之前,建议将安装目录下redis-5.0.5/redis.conf配置文件修改三个配置项:

1、protected-mode no (改为不保护,否则远程访问不了)

2、bind 127.0.0.1 (注释掉,否则只能本机ip访问)
3、daemonize yes (改为yes表示后台启动redis)

redis常用命令

基本命令

命令解释
./redis-server …/redis.conf(启动)redis的启动命令 需要先切换到src目录下(redis-5.0.5/src/)
./redis-cli shutdown 或者 kill pid 或者 kill -9 pid(关闭)redis的关闭命令 也是需要在src目录下执行(当redis收到SHUTDOWN命令后,会先断开所有客户端连接,然后根据配置执行持久化,最终完成优雅退出)

redis生存时间

命令解释
expire key seconds(生存时间)设置key的生存时间 key在xx秒以后自动删除
ttl key(查看生存时间)查看key剩余的生存时间
PERSIST key(清除生存时间)清除key的生存时间

查看key类型

命令解释
type key(查看类型)显示指定key的类型

String数据结构命令

常用命令解释
keys *(返回 key)返回符合给定模式的 key 列表
keys us*(返回key)返回key前面两个字符为us的key列表 (如果*在两边 就返回包含us字符的key 列表)
del k1 k2(删除)删除key为 k1,k2的key 列表
exists key(是否存在)用于判断key是否存在 存在返回1 反之返回0
set key value(赋值)创建一个key 并且赋值 当set操作成功以后会返回“OK”
get key(取值)查看这个key里面的 value值
getset key value(取值赋值)把之前的值取出来替换为现在写入的值
incr key(数值加一)如果key不存在则会创建,注意:key对应的值需要是数字类型。作用:当存储的字符串是整数时,Redis提供了一个实用的命令INCR,其作用是让当前键值递增,并返回递增后的值。
incrby key number增加指定的整数 (incrby a1 3)
decr key(数值减一)如果key不存在则会创建,注意:key对应的值需要是数字类型。作用:当存储的字符串是整数时,Redis提供了一个实用的命令decr,其作用是让当前键值递减,并返回递减后的值。
mset key1 value1 key2 value2….(一次性增加多个)一次性创建多个key 列表 相当于get的增强版 比如:mset a1 123 a2 456 a3 789 就会创建三个key.a1,a2,a3 他们的值分别是123,456,789
append key value(追加)比如key a1 的值是 12 我使用命令 append a1 34 当这个命令执行成功以后 a1的值就变为 1234

incr key 图片解释

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dWacGQLj-1618921050603)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20210419171204861.png)]

hash数据类型命令用法

命令解释
hset key field value(创建hash并赋值)例:hset user username zs 创建一个hash类型的user 给user下面的字段名(field)赋一个 zs 的值
hget key field(查看值)例:hget user username 查看user下面 username的value值
hdel key field1 field2…(删除)例:hdel user username password 删除 username password
hexists key field(判断是否存在)例: hexists user username 如果这个值不存在就返回0 存在就返回1
hkeys key获取这个hash类型的 key 下面的所有 字段名
hvals key获取这个hash类型的key 下面所有字段名的value值
hgetall key获取这个key下面的所有的字段名和字段名下的value值
hincrby key field number和incr命令一样 value 都是整数 例:hincrby user uid 2 给user 下面的uid的值增加2
hlen key获取 key的字段名的数量

list数据结构命令用法

命令解释
lpush key value value …让多条数据插入列表的头部(最左边),如果列表不存在,会创建一个空的列表并执行lpush。当key存在但列表类型的时候,返回一个错误
rpush key value value …用于将一个或多个值插入到列表的尾部(最右边)。如果列表不存在,一个空列表会被创建并执行 RPUSH 操作。 当列表存在但不是列表类型时,返回一个错误。
lpop key用于弹出并返回列表第一个元素
rpop key用于弹出并返回列表最后一个元素
llen key获取列表中元素的个数
lrem key count value根据count参数,删除列表中和value值相同的元素 count的值可以是这几种情况 1.count>0 从表头向表尾搜索,移除和value相等的元素,数量为count个 2…count=0 移除列表中fdfg45gwtrf5gbh6002115 所以和value相同的元素 3.count<0 从表尾向表头搜索,移除和value相等的元素,数量为count个
lindex key number通过索引获取到列表中的元素 从0开始 ,当然也可以使用负数下标 -1代表最后一个元素 -2 代表最后第二个元素 以此类推
ltrim对一个列表进行裁减,就是让一个列表只保留指定区间的元素,不在指定区间的元素都删除 0代表第一个元素 -1代表最后一个元素
linsert key before(之前)|after(之后) pivot valuelinsert 向列表添加元素 before:添加在指定元素的前面 after:添加在指定元素的后面 pivot代表指定元素 value需要插入的值 **返回值:**如果没有找到指定的元素 则返回-1 如果没有key 则返回0

set数据结构命令

命令解释
sadd key value value …将一个或者是多个元素添加到集合中,已经存在集合中的元素会被忽略
srem key value value …将一个或者是多个元素从集合中删除 ,不存在的成员元素会被忽略
smembers key返回一个集合中的所有成员元素 不存在的集合会被视为空集合
smsmember key value判断成员元素是否是集合中的元素 存在返回1 不存在返回0
sdiff key1 key2 key3 …命令返回第一个集合与其他集合之间的差异。也可以认为是第一个集合中的特有元素,不存在的key会视为空集合 例:key1:{1,2,3},key2:{2,4,6},key3:{3,5,6} 返回:{1}
sinter key1 key2 …返回给定所有集合的交集 不存在的集合会被视为空集 如果指定集合中存在空集 返回的结果也是空集
sunion key1 key2 …返回给定所有集合的并集,不存在的集合会被视为空集
scard key返回集合的元素个数
spop key count随机移除集合中的元素 移除一个或者是多个元素

sorted set数据结构命令

命令解释
zadd key score1 value1 score2 value2 …将一个或者多个成员元素和元素的分数一起添加到有序列表中
WITHSCORES参数如果需要获得元素的分数的可以在命令尾部加上 WITHSCORES 参数
zrange key start(开始下标) stop(结束下标) (WITHSCORES)返回有序列表中指定区间中的元素 按照成员元素的分数从小到大排序
zrevrange key start(开始下标) stop(结束下标)返回有序列表中指定区间中的元素 按照成员元素的分数从大到小排序
zscore key value返回有序集合中指定元素的分数
zrem key value …移除有序集合中 一个或者多个元素 ,不存在的元素会被忽略
zrangebyscore key min max (WITHSCORES)获取指定分数以内的元素
zincrby key increment(需要添加多少分) value给指定的元素增加分值
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值