Redis

  • 1、前言
  • 2、redis常用五大数据类型
  • 2.1、redis - string
  • 2.1.1、@1命令、操作及演示
  • 2.1.2、@2命令、操作及演示
  • 2.1.3、@3命令、操作及演示
  • 2.2、redis - list(单值多 value)
  • 2.3、redis - Hash
  • 2.4、redis - set(不重复的)
  • 2.5、redis - Zset(有序集合)


1、前言

在上一篇文章Centos 7 的基础上打开 redis 数据库

  • 第一步:用配置文件启动 redis 服务
  • src/redis-server redis.conf
  • 第二步:客户机打开 redis 服务
  • src/redis.cli

2、redis常用五大数据类型

2.1、redis - string

string 类型

  1. string 是 redis 最基本的类型,一个 key 对应一个 value
  2. string 可以包含任何数据,最大不能超过 512M

2.1.1、@1命令、操作及演示

具体命令:

  • set/get/del/append/strlen
  • set 设置单个值(set key value)
  • mset 设置多个值(mset key1 value1 key2 value2)
  • get 取单个值(get key)
  • mget 取多个值(mget key1 key2)
  • del 删除值(del key)
  • append 添加字段(append key value)
  • strlen 返回 key 对应 value 的字符串长度(strlen key)

具体操作:

  • 第一次:设置单个值(键值对 name — susu)及取值(name)
  • 第二次:设置多个值(键值对 name1 — susu 、name2 — keke)及取值(name1、name2)
  • 第三次:删除单个值(键值对 name1 — susu)及取值(name1)
  • 第四次:添加字段(name1 — susu)
  • 第五次:返回长度(name1 — susulovekeke)

以下用 Xshell 5 来演示过程:

  • 第一次(设置 name 为 susu)

使用redis服务存入数据 redis数据库使用_数据库

  • 第二次(设置 name1 为 susu,name2 为 keke,并取出 name1 和 name2)

使用redis服务存入数据 redis数据库使用_数据库_02

  • 第三次(删除 name1)

使用redis服务存入数据 redis数据库使用_数据库_03

  • 第四次(在 name1 的尾部添加 lovekeke)

使用redis服务存入数据 redis数据库使用_redis_04

  • 第五次(返回 name1 的长度)

使用redis服务存入数据 redis数据库使用_字符串_05

2.1.2、@2命令、操作及演示

具体命令:

  • incr/decr/incrby/decrby
  • incr 增加(incr key)
  • decr 减少(decr key)
  • incrby 增加 num(incrby key num)
  • decrby 减少 num(decrby key num)

具体操作:

  • 第一次:设置多个值(figure1 — 1,figure2 — 2),并且对其进行数值操作(+1,-1)
  • 第二次:设置多个值(figure3 — 1,figure4 — 2),并且对其进行数值操作(+num,-num)

以下用 Xshell 5 来演示过程:

  • 第一次(对 figure1 加 1,figure2 减 1)

使用redis服务存入数据 redis数据库使用_使用redis服务存入数据_06

  • 第二次(对 figure3 加 50,figure4 减 50)

使用redis服务存入数据 redis数据库使用_数据库_07

2.1.3、@3命令、操作及演示

具体命令:

  • getrange/setrange
  • getrange 获取指定区域的值(getrange key 索引起始 索引结束)
  • setrange 表示从第几位开始替换(getrange key 索引起始 value)

具体操作:

  • 第一次:设置单个值(num — 012345),并且获取指定范围内的值
  • 第二次:设置单个值(num1 — 012345),并且指定替换值

以下用 Xshell 5 来演示过程:

  • 第一次(类似索引,此处左右都是闭区间)

使用redis服务存入数据 redis数据库使用_字符串_08

  • 第二次(类似索引,将索引为 2 的数字 2 替换成了 9)

使用redis服务存入数据 redis数据库使用_数据库_09

2.2、redis - list(单值多 value)

List(列表)

  • 列表是简单的字符串列表
  • 按照插入顺序排序,可以在列表的左侧或右侧添加元素

具体命令:

  • lpush/rpush/lrange
  • lpush 从左侧插入数据到列表中(lpush key value1 value2 …)
  • rpush 从右侧插入数据到列表中(rpush key value1 value2 …)
  • lrange 获取列表中的值(lrange key 索引起始 索引结束)
  • lpop/rpop
  • lpop 移除最左侧的数据(lpop key)
  • rpop 移除最右侧的数据(rpop key)
  • lindex 按照索引下标获取数据(lindex 索引)
  • llen 求列表长度(len key)
  • lrem 删除指定数量(num)的数据(lrem key num value)
  • ltrim 获取列表指定区域的值并且重新赋值给列表(ltrim key 索引起始 索引结束)
  • rpoplpush 将列表的最右侧的一位压入另一个列表的最左侧(rpoplpush key1 key2)
  • lset 将列表的某索引项替换数据(lset key 索引项 value)
  • linsert 在列表的某索引项前后添加字段(linsert key before/after 索引项 value)

具体操作:

  • 第一次:新建左侧插入和右侧插入的二个列表(list1 — 1 2 3 4 5,list2 — 1 2 3 4 5),并且获取二个列表的值
  • 第二次:移除 list1 中最左侧和 list2 最右侧的元素,并且获取二个列表的值
  • 第三次:获取 list1 索引为 2 和 list2 索引为 0 的值
  • 第四次:获取 list1 列表长度
  • 第五次:新建右侧列表(list3 — 1 1 2 3 4 5),并且指定删除其中的数据,然后重新获取列表的值
  • 第六次:新建右侧列表(list4 — 1 2 3 4 5),并且获取指定索引区域的值重新赋值给列表,然后重新获取列表的值
  • 第七次:新建右侧列表(list5 — 1 2 3 4 5),并且将列表(list4 — 1 2 3)的最右侧元素压入列表(list5)的最左侧,然后重新获取二个列表的值
  • 第八次:新建右侧列表(list6 — 1 2 3 4 5),并且指定索引项替换数据,然后重新获取列表
  • 第九次:新建右侧列表(list7 — 1 2 3 4 5),并且指定数据后添加数据,然后重新获取列表

以下用 Xshell 5 来演示过程:

  • 第一次(左侧列表 5 4 3 2 1,右侧列表 1 2 3 4 5)

使用redis服务存入数据 redis数据库使用_使用redis服务存入数据_10

  • 第二次(删除 list1 的最左侧元素,删除 list2 的最右侧元素)

使用redis服务存入数据 redis数据库使用_数据库_11

  • 第三次(根本索引项来获取列表数据)

使用redis服务存入数据 redis数据库使用_数据库_12

  • 第四次(获取列表 list1 的长度)

使用redis服务存入数据 redis数据库使用_数据库_13

  • 第五次(删除 list3 的数据 1 二次)

使用redis服务存入数据 redis数据库使用_使用redis服务存入数据_14

  • 第六次(将 list4 的索引范围 0 2 替换原列表)

使用redis服务存入数据 redis数据库使用_使用redis服务存入数据_15

  • 第七次(将 list4 的最右侧数据 3 拿出来放在 list5 的最左侧)

使用redis服务存入数据 redis数据库使用_列表_16

  • 第八次(将列表 list6 的索引项为 0 的数据替换成 100)

使用redis服务存入数据 redis数据库使用_字符串_17

  • 第九次(在列表 list7 的 2 之后添加数据 10000)

使用redis服务存入数据 redis数据库使用_列表_18

2.3、redis - Hash

Hash(哈希):

  • hash 是一个键值对集合
  • hash 是一个 string 类型的 field 和 value 的映射表,hash特别适合存储对象

具体命令:

  • hset/hget/hmset/hmget/hgetall/hdel
  • hset 设置单个值(hset key key.1 value)
  • hget 取单个值(hget key key.1)
  • hmset 设置多个值(hmset key key.1 value1 key.2 value2 key.3 value3…)
  • hmget 取多个值(hmget key key.1 key.2 key.3…)
  • hgetall 返回哈希表全部值(hgetall key)
  • hdel 删除哈希表对应子键的值(hdel key key.1)
  • hlen 求哈希表长度(hlen key )
  • hexists 判断是否存在某值(hexists key key.1)
  • hkeys/hvals 查看哈希表中的键和值(hkey/hvals key)

具体操作:

  • 第一次:设置哈希表(hash — name — susu),并且返回值
  • 第二次:设置哈希表(hash1 — name — susu age — 19 sex — boy),并且返回值
  • 第三次:返回哈希表(hash1)的全部值
  • 第四次:删除哈希表(hash1 — name),并且返回哈希表长度
  • 第五次:判断哈希表(hash1)中是否存在键(name)或键(age)
  • 第六次:查看哈希表(hash1)中的键和值

以下用 Xshell 5 来演示过程:

  • 第一次(设置 hash 表里的键 name 对应的值是 susu)

使用redis服务存入数据 redis数据库使用_字符串_19

  • 第二次(设置 hash1 表里的键 name 对应的值是 susu,键 age 对应的值是 19,键 sex 对应的值是 boy)

使用redis服务存入数据 redis数据库使用_redis_20

  • 第三次(取出哈希表 hash1 的全部值)

使用redis服务存入数据 redis数据库使用_列表_21

  • 第四次(删除哈希表 hash1 键 name 对应的值,并且用 hlen 返回哈希表的长度)

使用redis服务存入数据 redis数据库使用_字符串_22

  • 第五次(判断哈希表 hash1 中是否存在 key)

使用redis服务存入数据 redis数据库使用_字符串_23

  • 第六次(查看键和值)

使用redis服务存入数据 redis数据库使用_使用redis服务存入数据_24

2.4、redis - set(不重复的)

Set(集合)

  • set 是 string 类型的无序集合

具体命令:

  • sadd/smembers/sismember
  • sadd 添加数据到集合中(自动去重)(sadd key value1 value2 value3 …)
  • smembers 查看集合中的数据(smembers key)
  • sismember 判断集合中是否存在数据(sismember key value)
  • scard 获取集合中的数据个数(scard key)
  • srem 删除集合中数据(srem key value)
  • srandmember 随机列出 num 个数(srandmember key num)
  • spop 随机出栈 num 个数(spop key num)
  • smove 将集合中的元素拿出来添加到另一个集合中(smove key1 key2 value)
  • 数学集合类
  • sdiff 差集(sdiff key1 key2)
  • sinter 交集(sinter key1 key2)
  • sunion 并集(sunion key1 key2)

具体操作:

  • 第一次:添加数据(1 1 2 3 4 4 5)到集合(set)中,并且查看集合(set)中的数据,然后判断数据(1)和(6)是否在集合中
  • 第二次:获取集合(set)的数据个数,并且删除集合(set)中的数据(1),然后重新查看集合数据
  • 第三次:随机获取集合(set)中的元素,并且查看集合数据,随机出栈集合(set)中的元素,并且重新查看集合数据
  • 第四次:添加数据(6 7 8 9)到集合(set1)中,将集合(set1)中的数据(6)添加到集合(set)中
  • 第五次:添加数据(1 2 3 4 5)到集合(set2)中,添加数据(1 2 3 a b)到集合(set3)中,并且进行数学集合运算

以下用 Xshell 5 来演示过程:

  • 第一次(数据存在在集合中则返回 1 ,否则返回 0)

使用redis服务存入数据 redis数据库使用_字符串_25

  • 第二次(查看集合 set 数据个数为 5 及删除集合 set 中元素 1)

使用redis服务存入数据 redis数据库使用_数据库_26

  • 第三次(随机获取数据及随机出栈)

使用redis服务存入数据 redis数据库使用_redis_27

  • 第四次(将源 set1 中的数据 6 添加到集合 set 中)

使用redis服务存入数据 redis数据库使用_列表_28

  • 第五次(数学集合类运算)

使用redis服务存入数据 redis数据库使用_字符串_29

2.5、redis - Zset(有序集合)

具体命令:

  • zadd/zrange
  • zadd 添加数据到集合中(zadd key value1 key.1 value2 key.2 value3 key.3 …)
  • zrange 根据索引项获取集合中数据(zrange key 索引起始 索引结束)
  • zrangebyscore 根据 value 开始到结束来取值(zrangebyscore key value1 value2)
  • zrem 删除集合中键对应的值(zrem key key.n)
  • zcard/zcount/zrank
  • zcard 求集合的总条数(zcard key)
  • zcount 指定范围求总条数(zcount key value1 value2)
  • zrank 返回集合中数据的索引项(zrank key key.1)

具体操作:

  • 第一次:添加数据(60 susu 70 keke 80 hanhan)到有序集合(zset)中,并且获取集合中所有数据
  • 第二次:获取集合中(value)从 60 到 70 的值,并且删除集合(zset)中的 key.1(susu)对应的 value1
  • 第三次:求集合(set)中的总条数,求集合(set)中范围内的总条数,求集合(set)的 key.2 和 key.3 对应的索引项

以下用 Xshell 5 来演示过程:

  • 第一次(添加数据到有序集合中,并且取出全部值)

使用redis服务存入数据 redis数据库使用_数据库_30

  • 第二次(根据值的范围来取值,并且根据键来删除值)

使用redis服务存入数据 redis数据库使用_使用redis服务存入数据_31

  • 第三次(根据值的范围取出集合中的数据,根据键来取索引项)

使用redis服务存入数据 redis数据库使用_数据库_32