Redis学习笔记(一)Redis基础知识

  |   0 评论   |   0 浏览

前言

本篇文章是我学习Redis数据库的总结笔记,内容包括Redis的安装以及基本数据类型的操作

Redis 基础

Redis 是一个开源的(遵从BSD协议)高性能键值对(key-value)的内存数据库,可以用作数据库、缓存、消息中间件等。它是一种NoSQL(not-only sql,泛指非关系型数据库)的数据库。

安装 redis

推荐使用Docker安装Redis,非常简单,只需要以下几个步骤:

1. 拉取镜像
docker pull redis
2. 创建Redis容器
docker run -itd --name redis -p 6379:6379 redis
3. 进入Redis容器,通过redis-cli命令就可以使用了
$ docker exec -it redis /bin/bash
root@cf1b4dc48215:/data# redis-cli
127.0.0.1:6379>
4. 安装iredis插件

iredis(Interactive Redis,即:交互式Redis),是 Redis 的终端客户端,具有自动补全功能和语法高亮功能。这样在练习Redis的时候,就不用担心记不住各种指令了。 安装过程很简单,在终端输入pip install iredis即可(如果安装慢,可以在这条指令后加上--default-timeout=100 -i https://pypi.tuna.tsinghua.edu.cn/simple,指定国内源),安装完成后,在终端输入iredis指令,就会自动连接到本地的Redis了。效果如下图所示:

iredis使用效果

Redis基本数据类型及其操作

这部分参考官方文档An introduction to Redis data types and abstractionsRedis commands

1. Redis keys

Redis是一key-value数据库,数据的增加、修改、删除、查找操作都是围绕着key来进行的。Redis keys是二进制安全的,我们可以使用一个字符串"foo"来表示key,空字符也是合法的。key的最大值允许达到512MB,但是一般建议key的值不应该太大也不应该太小,推荐使用"object-type:id"这种格式,比如"user:10"。

key的基本操作指令:

  • del key : 该命令用来删除key,如果删除成功,则返回(integer) 1,否则返回(integer) 0
  • exists key : 判断key是否存在
  • expire key seconds : 给key设置过期时间,单位是秒
  • expireat key timestamp : 给key设置过期时间,单位是时间戳
  • pexpire key milliseconds : 给key设置过期时间,单位是毫秒
  • keys pattern : 根据(pattern)查找key
  • move key db : 将key移动到指定数据库
  • persist key : 移除key的过期时间,key将永久存储
  • pttl key : 查看key的剩余的过期时间(单位毫秒),如果没有给key设置过期时间,则返回-1
  • ttl key : 查看key的剩余过期时间(单位秒),如果没有给key设置过期时间,则返回-1
  • randomkey : 从当前数据库中随机返回一个key
  • rename key newkey : 重命名key(这条命令可能会覆盖newkey)
  • renamex key newkey : 仅当newkey不存在时,将key改名为newkey
  • type key : 返回key的类型
  • SCAN cursor [MATCH pattern] [COUNT count] [TYPE type] : 迭代当前数据库中的key

2. Redis Strings

字符串,是Redis最简单的数据类型

Redis Strings的基本操作指令:

  • set key value : 设置key的值
  • setnx key value : 当key不存在时,设置key的值
  • set key value nx : 当key不存在时,设置key的值
  • get key : 获取key的值
  • getrange key start end : 截取key中存储的字符串的部分并返回
  • mset key1 value1 key2 value2 ... : 给多个key设置值
  • mget key1 key2 ... : 获取多个key的值
  • setex key seconds value : 设置key的值,并且设置过期时间为seconds秒
  • strlen key : 返回key存储的字符串的长度
  • incr key : 将key中存储的值加一
  • incrby key increment : 将 key 所储存的值加上给定的增量值(increment)
  • decr key : 将key中存储的值减一
  • decr by key decrement : 将 key 所储存的值减去给定的减量值(decrement)

3. Redis Lists

Redis Lists 是基于 linked list 实现的,所以它的特点是增删快

Redis Lists 基本的基本操作指令:

  • lpush key element1 [element2] : 将一个或多个元素插入列表头部(左边)
  • rpush key element1 [element2] : 将一个或多个元素插入列表尾部(右边)
  • llen key : 获取列表的长度
  • lindex key index : 根据下标获取列表中指定位置的元素
  • lpop key : 获取列表中的第一个元素,并删除
  • rpop key : 获取列表中的最后一个元素,并删除
  • lrange key start end : 获取列表指定范围内的元素,(lrange key 0 -1 遍历整个列表)

4. Redis Hashes

Redis hash 的存储格式为key-value的键值对,比较适合用来存储对象

Redis hash的基本操作指令:

  • hset key filed1 value1 [field2 value2 ...] : 将多个field-value键值对存储到key对于的哈希表中
  • hsetnx key filed value : 只有当哈希表key中的filed字段不存在时,才设置filed字段的值为value
  • hget key filed : 获取哈希表key中的filed字段的值
  • hgetall key : 获取哈希表key中所有字段和字段值
  • hdel key filed : 删除哈希表key中的field字段
  • hkeys key : 获取哈希表key中所有的字段名
  • hvals key : 获取哈希表key中所有的字段值
  • hlen key : 获取哈希表key中的filed数量
  • hexists key filed : 判断哈希表中是否存在field字段
  • hincrby key filed increment : 将哈希表key中的filed字段加上一个增量值increment
  • hscan key cursor [MATCH pattern] [COUNT count] : 迭代哈希表中的键值对

5. Redis Sets

Redis Set 是无序的字符串集合,不允许出现重复元素

Redis Set 的基本操作指令:

  • sadd key member1 [member] : 向集合中添加一个或多个成员
  • sismenber key value : 判断value是否是集合key中的成员
  • scard key : 获取即可key中的元素个数
  • sdiff key1 [key2...] : 返回第一个集合与其他集合不同的成员
  • sdiffstore destination key1 [key2...] : 返回第一个集合去其他集合不用的成员,并存储在集合 destination中
  • sinter key1 [key2...] : 返回集合之间的交集
  • sinterstore destination key1 [key2...] : 返回集合之间的交集,并存储在集合destination中
  • smembers key : 获取集合中的所有成员
  • smove source destination member : 将集合source中的成员member移动到集合destination
  • spop key [count] : 随机返回集合key中的一个或多个成员,并删除
  • srandmember key [count] : 随机返回集合key中的一个或多个成员
  • srem key member [member ...] : 删除集合key中指定(可以是一个或多个)的成员
  • sunion key1 [key2 ...] : 返回多个集合的并集
  • sunionstore destination key1 [key2 ...] : 返回多个集合的并集,并存储在destination集合中
  • sscan key cursor [MATCH pattern] [COUNT count] : 迭代集合中的元素

6. Redis Sorted Sets

Redis Sorted Sets 是有序的字符串集合,不允许重复的元素,类似于Redis Set 和 Redis Hash 的一种混合。每一个Redis Sorted Sets的元素都会关联一个浮点数,叫做score,Redis根据score值的大小来进行排序。

Redis Sorted Sets 基本操作指令:

  • zadd key score1 value1 [score2 value2 ...] : 添加一个或多个元素到集合key
  • zcard key : 获取有序集合key中的元素个数
  • zcount key min max : 计算指定分数区间内的元素个数
  • zincrby key increment member : 将有序集合key中的元素member的分数加上increment
  • zinterstore destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX] : 计算多个有序集合中交集并存储到有序集合destination中
  • zscore key member : 获取有序集合key中的成员member的分数
  • zrange key start stop [WITHSCORES] : 获取有序集合key指定范围内的成员(zrange key 0 -1 withscores 遍历集合key)
  • zrank key member : 返回有序集合key中成员member的索引
  • zrem key member : 删除有序集合key中的成员member
  • zrevrange key start stop [WITHSCORES] : 获取有序集合key指定范围内的成员(按照从高到低的顺序)
  • zunionstore destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX] : 将多个有序集合的并集存储到新的有序集合destination中
  • zscan key cursor [MATCH pattern] [COUNT count] : 迭代有序集合key

最后

Redis 基础知识就先总结到这里,其他的知识点等用到了再去深入研究


标题:Redis学习笔记(一)Redis基础知识
作者:marshalby2
地址:http://www.yunxincoder.cn/articles/2020/10/11/1602422843813.html