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 类型
- string 是 redis 最基本的类型,一个 key 对应一个 value
- 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)
- 第二次(设置 name1 为 susu,name2 为 keke,并取出 name1 和 name2)
- 第三次(删除 name1)
- 第四次(在 name1 的尾部添加 lovekeke)
- 第五次(返回 name1 的长度)
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)
- 第二次(对 figure3 加 50,figure4 减 50)
2.1.3、@3命令、操作及演示
具体命令:
- getrange/setrange
- getrange 获取指定区域的值(getrange key 索引起始 索引结束)
- setrange 表示从第几位开始替换(getrange key 索引起始 value)
具体操作:
- 第一次:设置单个值(num — 012345),并且获取指定范围内的值
- 第二次:设置单个值(num1 — 012345),并且指定替换值
以下用 Xshell 5 来演示过程:
- 第一次(类似索引,此处左右都是闭区间)
- 第二次(类似索引,将索引为 2 的数字 2 替换成了 9)
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)
- 第二次(删除 list1 的最左侧元素,删除 list2 的最右侧元素)
- 第三次(根本索引项来获取列表数据)
- 第四次(获取列表 list1 的长度)
- 第五次(删除 list3 的数据 1 二次)
- 第六次(将 list4 的索引范围 0 2 替换原列表)
- 第七次(将 list4 的最右侧数据 3 拿出来放在 list5 的最左侧)
- 第八次(将列表 list6 的索引项为 0 的数据替换成 100)
- 第九次(在列表 list7 的 2 之后添加数据 10000)
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)
- 第二次(设置 hash1 表里的键 name 对应的值是 susu,键 age 对应的值是 19,键 sex 对应的值是 boy)
- 第三次(取出哈希表 hash1 的全部值)
- 第四次(删除哈希表 hash1 键 name 对应的值,并且用 hlen 返回哈希表的长度)
- 第五次(判断哈希表 hash1 中是否存在 key)
- 第六次(查看键和值)
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)
- 第二次(查看集合 set 数据个数为 5 及删除集合 set 中元素 1)
- 第三次(随机获取数据及随机出栈)
- 第四次(将源 set1 中的数据 6 添加到集合 set 中)
- 第五次(数学集合类运算)
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 来演示过程:
- 第一次(添加数据到有序集合中,并且取出全部值)
- 第二次(根据值的范围来取值,并且根据键来删除值)
- 第三次(根据值的范围取出集合中的数据,根据键来取索引项)