源码论坛网站网页设计页面
源码论坛网站,网页设计页面,wordpress install-helper.php,手机网站建设需求分析Redis入门#xff1a;五大数据类型 文章目录 Redis入门#xff1a;五大数据类型一.概述二.Redis的基本了解三.Redis五大数据类型1.String (字符串)2.List(列表)3.Set集合(元素唯一不重复)4.Hash集合5.zSet(有序集合) 一.概述
什么是Redis
Redis#xff08;Remote Dictiona…Redis入门五大数据类型 文章目录 Redis入门五大数据类型一.概述二.Redis的基本了解三.Redis五大数据类型1.String (字符串)2.List(列表)3.Set集合(元素唯一不重复)4.Hash集合5.zSet(有序集合) 一.概述
什么是Redis
RedisRemote Dictionary Server)即远程字典服务是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库并提供多种语言的API。
Redis优点
redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件并且在此基础上实现了master-slave(主从)同步。纯内存操作——绝大部分请求时存粹的内存操作非常快速。数据存在内存中类似于HashMap,HashMap的优势时查找和操作的时间复杂度是O(1)数据结构简单对数据操作也简单单线程操作——省去多线程时CPU上下文会切换的时间也不用去考虑各种锁的问题不存在加锁释放锁的操作没有死锁问题导致的性能消耗免费和开源是当下最热门的NoSQL技术之一也被人们称为结构化数据库
二.Redis的基本了解 首先可以参考官方文档是如何介绍的官方文档 也可以参考中文文档
所有的命令都可以在Redis官网上进行查找
三.Redis五大数据类型
1.String (字符串) 添加、查询、追加、获取长度、判断是否存在操作 127.0.0.1:6379 set name aaa #插入一个key为name value为aaa的数据
OK
127.0.0.1:6379 get name #获取key为name的value值
aaa
127.0.0.1:6379 KEYS * # 查看当前库的所有值
1) name
127.0.0.1:6379 EXISTS name #判断key为name的数据是否存在存在放回1
(integer) 1
127.0.0.1:6379 EXISTS name1 # 不存在返回0
(integer) 0
127.0.0.1:6379 GET key
(nil)
127.0.0.1:6379 APPEND name bbbccc #追加到key为name的数据后拼接值为bbbccc,如果key存在就类似于Java中字符串的,不存在则新增一个并且返回该数据的总长度
(integer) 9
127.0.0.1:6379 GET name
aaabbbccc
127.0.0.1:6379 STRLEN name #查看key为name的字符串长度
(integer) 9
127.0.0.1:6379 get name
aaabbbccc
127.0.0.1:6379 set key1 hello world! #如果数据中有空格的数据需要使用双引号否则会报错
OK
127.0.0.1:6379 set key1 hello world!
(error) ERR syntax error
127.0.0.1:6379 set key1 hello,world! #逗号是可以的
OK自增、自减操作 127.0.0.1:6379 set num 0 #插入一个初始值为0的数据
OK
127.0.0.1:6379 get num
0
127.0.0.1:6379 INCR num #指定key为num的数据自增1返回结果 相当于Java中的 i
(integer) 1
127.0.0.1:6379 get num
1
127.0.0.1:6379 INCR num
(integer) 2
127.0.0.1:6379 INCR num
(integer) 3
127.0.0.1:6379 get num
3
127.0.0.1:6379 DECR num #指定key为num的数据自减1返回结果 相当于Java中的 i--
(integer) 2
127.0.0.1:6379 DECR num
(integer) 1
127.0.0.1:6379 DECR num
(integer) 0
127.0.0.1:6379 DECR num
(integer) -1
127.0.0.1:6379 DECR num
(integer) -2
127.0.0.1:6379 DECRBY num 3 # num-3
(integer) -5
127.0.0.1:6379 INCRBY num 10# num10
(integer) 5截取、替换字符串操作 #截取
127.0.0.1:6379 set key hello world!
OK
127.0.0.1:6379 get key
hello world!
127.0.0.1:6379 GETRANGE key 0 4 # 截取字符串相当于Java中的subString从下标0开始不会改变原有的数据
hello
127.0.0.1:6379 GETRANGE key 0 -1 # 0至-1相当于get key,获取整条数据
hello world!
#替换
127.0.0.1:6379 set key2 hello,,,world!
OK
127.0.0.1:6379 get key2
hello,,,world!
127.0.0.1:6379 SETRANGE key2 5 888 #此语句跟java中replace有点类似下标也是从0开始但是有区别java中是指定替换字符Redis中是从指定位置开始替换替换的数据根据你所需替换的长度一致返回值是替换后的长度
(integer) 14
127.0.0.1:6379 get key2
hello888world!
127.0.0.1:6379 SETRANGE key2 5 67 #此处只替换了两位
(integer) 14
127.0.0.1:6379 get key2
hello678world!设置过期时间、不存在设置操作 #设置过期时间
127.0.0.1:6379 SETEX name1 15 aabbcc #新建一个key为name1值为aabbcc,过期时间为15秒的字符串数据
OK
127.0.0.1:6379 ttl name1 #查看key为name1的key的过期时间
(integer) 7
127.0.0.1:6379 ttl name1
(integer) 6
127.0.0.1:6379 ttl name1
(integer) 3
127.0.0.1:6379 ttl name1 # 返回-2时证明key已经过期即不存在
(integer) -2
#不存在设置
127.0.0.1:6379 SETNX name2 ddeeff #如果key为name2不存在新增数据返回值1为成功
(integer) 1
127.0.0.1:6379 get name2
ddeeff
127.0.0.1:6379 keys *
1) name2
127.0.0.1:6379 setnx name2 aaabbbccc #如果key为name2已存在设置失败返回值为0
(integer) 0
127.0.0.1:6379 get name2
ddeeffmset、mget操作 127.0.0.1:6379 mset k1 v1 k2 v2 k3 v3 #插入多条数据
OK
127.0.0.1:6379 keys *
1) k2
2) k1
3) k3
127.0.0.1:6379 mget k1 k2 k3
1) v1
2) v2
3) v3
127.0.0.1:6379 MSETNX k1 v1 k4 v4 #msetnx是一个原子性的操作在一定程度上保证了事务要么都成功要么都失败相当于if中的条件与
(integer) 0
127.0.0.1:6379 MSETNX k5 v5 k4 v4 #全部成功
(integer) 1
127.0.0.1:6379 keys *
1) k2
2) k3
3) k1
4) k5
5) k4添加获取对象、getset操作 #这里其实本质上还是字符串但是我们讲其key巧妙的设计了一下。
##mset student:1:name student 相当于类名1 相当于idname 相当于属性
#如果所需数据全部这样设计那么我们在java的业务代码中就不需要关注太多的key
#只需要找到student类下面哪个id需要哪个属性即可减少了代码的繁琐在一定程度上可以理解为这个一个类的对象
127.0.0.1:6379 mset student:1:name aabbcc student:1:age 22 #新增一个key为‘student:1:name’value为‘dingdada ’的数据
OK
127.0.0.1:6379 keys * #查看所有的key
1) student:1:name
2) student:1:age
127.0.0.1:6379 mget student:1:age student:1:name #获取数据
1) 22
2) aabbcc#getset操作
127.0.0.1:6379 GETSET name1 aabb #先get再set,先获取key如果没有set值进去返回的是get的值
(nil)
127.0.0.1:6379 get name1
aabb
127.0.0.1:6379 GETSET name1 112233 #先获取key如果有set最新的值进去返回get的值
aabb
127.0.0.1:6379 GETSET name1 #替换成功
112233String是Redis中最常用的一种数据类型也是Redis中最简单的一种数据类型。首先表面上是字符串但其实可以灵活的表示字符串、整数、浮点数3种值。Redis会自动识别这3种值。
2.List(列表) lpush(左插入)、lrange(查询集合)、rpush(右插入)操作 #lpush
127.0.0.1:6379 LPUSH list v1 #新增一个集合
(integer) 1
127.0.0.1:6379 LPUSH list v2
(integer) 2
127.0.0.1:6379 LPUSH list v3
(integer) 3
127.0.0.1:6379 LRANGE list 0 -1 #查询list的所有元素值
1) v3
2) v2
3) v1
127.0.0.1:6379 LPUSH list1 v1 v2 v3 v4 v5 #批量添加集合元素
(integer) 5
127.0.0.1:6379 LRANGE list 0 -1
1) v3
2) v2
3) v1
127.0.0.1:6379 LRANGE list1 0 -1
1) v5
2) v4
3) v3
4) v2
5) v1
# 这里先进去的会到后面
#rpush
127.0.0.1:6379 LRANGE list 0 1 #指定查询列表中的元素从下标0开始1结束两个元素
1) v3
2) v2
127.0.0.1:6379 LRANGE list 0 0 #指定查询列表中的唯一元素
1) v3
127.0.0.1:6379 lpush list rv0 #右插入跟lpush相反这里添加进去元素是在尾部
(integer) 4
127.0.0.1:6379 LRANGE list 0 -1 #查看集合所有元素
1) rv0
2) v3
3) v2
4) v1lpop(左移除)、rpop(右移除)操作 #lpop
127.0.0.1:6379 LRANGE list1 0 -1
1) v5
2) v4
3) v3
4) v2
5) v1
127.0.0.1:6379 lpop list1
v5
#rpop
127.0.0.1:6379 LRANGE list1 0 -1
1) v4
2) v3
3) v2
4) v1
127.0.0.1:6379 rpop list1
v1
127.0.0.1:6379 LRANGE list1 0 -1
1) v4
2) v3
3) v2lindex(查询指定下标元素)、llen(获取集合长度)操作 #lindex
127.0.0.1:6379 LRANGE list1 0 -1
1) v4
2) v3
3) v2
127.0.0.1:6379 LRANGE list1 0 -1
1) v4
2) v3
3) v2
127.0.0.1:6379 LINDEX list1 1 #获取指定下标位置集合的元素下标从0开始计数
v3
127.0.0.1:6379 LINDEX list1 0
v4
#llen
127.0.0.1:6379 llen list1 #获取指定集合的元素长度
(integer) 3lrem(根据value移除指定的值) 127.0.0.1:6379 LRANGE list1 0 -1
1) v4
2) v3
3) v2
127.0.0.1:6379 lrem list1 1 v2 #移除集合list中的元素v2的元素1个
(integer) 1
127.0.0.1:6379 LRANGE list1 0 -1
1) v4
2) v3
127.0.0.1:6379 lrem list1 0 v3 #移除集合list中的元素v3的元素1个,这里0和1效果一样
(integer) 1
127.0.0.1:6379 lpush list1 v3 v2 v2 v2
(integer) 5
127.0.0.1:6379 LRANGE list1 0 -1
1) v2
2) v2
3) v2
4) v3
5) v4
127.0.0.1:6379 LREM list1 2 v2 #移除集合list中元素为v2 的‘2’个这里的参数数量如果实际中集合元素数量不达标不会报错全部移除后返回成功移除后的数量值
(integer) 2
127.0.0.1:6379 LRANGE list1 0 -1
1) v2
2) v3
3) v4ltrim(截取元素)、rpoplpush(移除指定集合中最后一个元素到一个新的集合中)操作 #ltrim
127.0.0.1:6379 lpush list v1 v2 v3 v4
(integer) 4
127.0.0.1:6379 LRANGE list 0 -1
1) v4
2) v3
3) v2
4) v1
127.0.0.1:6379 LTRIM list 1 2 #通过下标截取指定的长度
OK
127.0.0.1:6379 LRANGE list 0 -1
1) v3
2) v2
#rpoplpush
127.0.0.1:6379 lpush list v1 v2 v3 v4 v5
(integer) 5
127.0.0.1:6379 LRANGE list 0 -1
1) v5
2) v4
3) v3
4) v2
5) v1
127.0.0.1:6379 RPOPLPUSH list newlist #移除list集合中的最后一个元素到新的集合newlist中返回值是移除的最后一个元素值
v1
127.0.0.1:6379 LRANGE newlist 0 -1 #存在newlist集合并且有刚刚移除的元素
1) v1lset(更新)、linsert操作 #lset
127.0.0.1:6379 LRANGE list 0 -1
1) v5
2) v4
3) v3
4) v2
127.0.0.1:6379 lset list 1 newV5 # 更新list集合中下标为1的元素为newV5
OK
127.0.0.1:6379 LRANGE list 0 -1
1) v5
2) newV5
3) v3
4) v2
##注意
127.0.0.1:6379 lset list1 0 vvvv #如果指定的集合不在报错
(error) ERR no such key
127.0.0.1:6379 lset list 8 vvv #如果集合存在但是指定的下标不存在报错
(error) ERR index out of range
#linsert
127.0.0.1:6379 LRANGE list 0 -1
1) v5
2) newV5
3) v3
4) v2
127.0.0.1:6379 LINSERT list after v3 insertv3 #在集合中的v3元素(after)之后加上一个元素
(integer) 5
127.0.0.1:6379 LRANGE list 0 -1
1) v5
2) newV5
3) v3
4) insertv3
5) v2
127.0.0.1:6379 LINSERT list before v3 insertv3 #在集合中的v3元素(before)之后加上一个元素
(integer) 6
127.0.0.1:6379 LRANGE list 0 -1
1) v5
2) newV5
3) insertv3
4) v3
5) insertv3
6) v23.Set集合(元素唯一不重复) sadd(添加)、smembers(查看所有元素)、sismember(判断是否存在)、scard(查看长度)、srem(移除指定元素)操作 127.0.0.1:6379 sadd set1 aa bb cc dd #添加set集合
(integer) 4
127.0.0.1:6379 SMEMBERS set1
1) bb
2) aa
3) dd
4) cc
127.0.0.1:6379 SISMEMBER set1 aa
(integer) 1
127.0.0.1:6379 SISMEMBER set1 aab
(integer) 0
127.0.0.1:6379 SCARD set1
(integer) 4
127.0.0.1:6379 srem set1 aa
(integer) 1
127.0.0.1:6379 SMEMBERS set1
1) bb
2) dd
3) ccsrandmember(抽随机)操作 127.0.0.1:6379 sadd myset 1 2 3 4 5 6 7
(integer) 7
127.0.0.1:6379 SMEMBERS myset
1) 1
2) 2
3) 3
4) 4
5) 5
6) 6
7) 7
127.0.0.1:6379 SRANDMEMBER myset 1 #从set中随机取一个数
1) 7
127.0.0.1:6379 SRANDMEMBER myset 1
1) 4
127.0.0.1:6379 SRANDMEMBER myset 1
1) 3
127.0.0.1:6379 SRANDMEMBER myset 3 #从set中随机取三个数
1) 2
2) 6
3) 4
127.0.0.1:6379 SRANDMEMBER myset 3
1) 2
2) 3
3) 7spop(随机删除元素)、smove(移动指定元素到新的集合中)操作 127.0.0.1:6379 spop myset #随机删除一个元素
5
127.0.0.1:6379 spop myset 1 #随机删除一个元素
1) 4
127.0.0.1:6379 spop myset 2 #随机删除两个元素
1) 1
2) 2
127.0.0.1:6379 SMEMBERS myset
1) 3
2) 6
3) 7
127.0.0.1:6379 SMOVE myset myset2 3 #移动指定set中的元素到新的set中
(integer) 1
127.0.0.1:6379 SMEMBERS myset
1) 6
2) 7
127.0.0.1:6379 SMEMBERS myset2
1) 3sdiff(差集)、sinter(交集)、sunion(并集)操作 127.0.0.1:6379 sadd myset 1 2 3 4 5
(integer) 5
127.0.0.1:6379 sadd myset2 3 4 5 6 7
(integer) 5
127.0.0.1:6379 SMEMBERS myset
1) 1
2) 2
3) 3
4) 4
5) 5
127.0.0.1:6379 SMEMBERS myset2
1) 3
2) 4
3) 5
4) 6
5) 7
127.0.0.1:6379 SDIFF myset myset2 #差集
1) 1
2) 2
127.0.0.1:6379 SINTER myset myset2 #并集
1) 3
2) 4
3) 5
127.0.0.1:6379 SUNION myset myset2 #交集
1) 1
2) 2
3) 3
4) 4
5) 5
6) 6
7) 74.Hash集合 hset(添加hash)、hget(查询)、hgetall(查询所有)、hdel(删除hash中指定的值)、hlen(获取hash的长度)、hexists(判断key是否存在) 127.0.0.1:6379 hset hash1 name aaa age 20 #添加hash可添加多个
(integer) 2
127.0.0.1:6379 hget hash1 name # 获取hash中key是name的值
aaa
127.0.0.1:6379 hget hash1 age
20
127.0.0.1:6379 HGETALL hash1 #获取hash中全部的值包括key
1) name
2) aaa
3) age
4) 20
127.0.0.1:6379 hset hash1 del test
(integer) 1
127.0.0.1:6379 HGETALL hash1
1) name
2) aaa
3) age
4) 20
5) del
6) test
127.0.0.1:6379 HDEL hash1 del age # 删除指定的hash中的key(可多个),key删除后对应的value也会删除
(integer) 2
127.0.0.1:6379 HGETALL hash1
1) name
2) aaa
127.0.0.1:6379 HLEN hash1 #获取指定的hash的长度
(integer) 1
127.0.0.1:6379 HEXISTS hash1 name # 判断key是否存在于指定的value中存在返回1
(integer) 1
127.0.0.1:6379 HEXISTS hash1 age # 不存在返回0
(integer) 0hkeys(获取所有的key)、hval(获取所有value)、hincrby(给值加增量)、hsetnx(存在不添加)操作 127.0.0.1:6379 hset hash1 age 20 hight 180
(integer) 2
127.0.0.1:6379 hgetall hash1
1) name
2) aaa
3) age
4) 20
5) hight
6) 180
127.0.0.1:6379 HKEYS hash1 #获取指定hash中所有的key
1) name
2) age
3) hight
127.0.0.1:6379 HVALS hash1 #获取指定hash中所有的val
1) aaa
2) 20
3) 180
127.0.0.1:6379 HINCRBY hash1 age 2 #让hash中age的value指定2(自增)
(integer) 22
127.0.0.1:6379 HINCRBY hash1 age -1 #让hash中age的value指定-1(自减)
(integer) 21
127.0.0.1:6379 HSETNX hash1 nokey novalue #添加hash中不存在的值返回新增成功的数量
(integer) 1
127.0.0.1:6379 HSETNX hash1 name haha #添加存在则失败返回0
(integer) 0
127.0.0.1:6379 HGETALL hash1
1) name
2) aaa
3) age
4) 21
5) hight
6) 180
7) nokey
8) novalue5.zSet(有序集合) zadd(添加)、zrange(查询)、zrangebyscore(排序小-大)、zrevrange(排序大-小)、zrangebyscore withscores(查询所有值包含key) 127.0.0.1:6379 zadd zset 1 one 2 two 3 three #添加多个zset值
(integer) 3
127.0.0.1:6379 ZRANGE zset 0 -1 #查询所有的值
1) one
2) two
3) three
# -inf 代表负无穷 inf代表正无穷
127.0.0.1:6379 ZRANGEBYSCORE zset -inf inf #将zset按从小到大排序并输出
1) one
2) two
3) three
127.0.0.1:6379 ZRANGEBYSCORE zset 0 1 #只查询key1的值并且排序从小到大
1) one
127.0.0.1:6379 ZREVRANGE zset 1 -1 #从大到小排序输出
1) two
2) one
127.0.0.1:6379 ZRANGEBYSCORE zset -inf inf withscores #查询指定zset的所有值包含序号的值
1) one
2) 1
3) two
4) 2
5) three
6) 3zrem(移除元素)、zcard(查看元素个数)、zcount(查询指定区间内的元素个数)操作 127.0.0.1:6379 zadd set 1 v1 2 v2 3 v3 4 v4
(integer) 4
127.0.0.1:6379 ZRANGE set 0 -1
1) v1
2) v2
3) v3
4) v4
127.0.0.1:6379 zrem set v3 #移除指定元素可多个
(integer) 1
127.0.0.1:6379 ZRANGE set 0 -1
1) v1
2) v2
3) v4
127.0.0.1:6379 ZCARD set #查看元素个数
(integer) 3
127.0.0.1:6379 ZCOUNT set 0 100 #查看指定区间的元素个数
(integer) 3
127.0.0.1:6379 ZCOUNT set 0 2
(integer) 2以上就是Redis的五大类型的使用关于其他命令都可以在外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_urlrpos_idimg-SWDR0SC1-1701160381600)上进行查找。 “one” 2) “1” 3) “two” 4) “2” 5) “three” 6) “3” 2. zrem(移除元素)、zcard(查看元素个数)、zcount(查询指定区间内的元素个数)操作shell
127.0.0.1:6379 zadd set 1 v1 2 v2 3 v3 4 v4
(integer) 4
127.0.0.1:6379 ZRANGE set 0 -1
1) v1
2) v2
3) v3
4) v4
127.0.0.1:6379 zrem set v3 #移除指定元素可多个
(integer) 1
127.0.0.1:6379 ZRANGE set 0 -1
1) v1
2) v2
3) v4
127.0.0.1:6379 ZCARD set #查看元素个数
(integer) 3
127.0.0.1:6379 ZCOUNT set 0 100 #查看指定区间的元素个数
(integer) 3
127.0.0.1:6379 ZCOUNT set 0 2
(integer) 2以上就是Redis的五大类型的使用关于其他命令都可以在官网上进行查找。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/89039.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!