2021.11.15-11.17 周一----周三 java学习日志

这两天主要是学习了一下redis的基础语法。后面还有一些,争取明天完成redis语法的学习。

一.Redis的开启语法

1.redis服务运行正常

127.0.0.1:6379[1]> ping

PONG

2.选择数据库

127.0.0.1:6379> select 0 选择数据库0 总共16个数据库

3.清空当前的数据库

127.0.0.1:6379[1]> flushdb

4.开启数据库步骤

  [root@localhost ~]# redis-server &

  [root@localhost ~]# redis-cli

  127.0.0.1:6379> 至此进入数据库

二.Redis的1个key+5种数类型的操作语法

1.key

k1 v1 这是准备工作:先在库0 中准备这样几个key和value,来练习key的操作。

word w1 注意:redis默认是有16个库:库0-库15

woord w2

set wod w3

1.keys语法

keys * 查询此表中所有的key。

keys wo?d wo?d 匹配 word , wood(?表示单个的字符)。

keys wo[or]d wo[or]d匹配 word, wood,不匹配wold、woord。

2.exists语法

127.0.0.1:6379> exists k1 判断k1是否存在?

(integer) 1 存在的话:返回个数1。

-----------------------------------------------------------------------------------

127.0.0.1:6379> exists k5 k5是否存在?

(integer) 0 不存在?返回个数0。

-----------------------------------------------------------------------------------

127.0.0.1:6379> exists k1 k2 k3 word 判断k1 k2 k3 word是否存在?

(integer) 2                                                         存在的话:返回存在的个数!

3.move语法

127.0.0.1:6379> move k1 1 把k1移动到库1中

(integer) 1                              移动成功:返回1。失败:返回0。

4.ttl语法

127.0.0.1:6379[1]> ttl k1 查看k1的剩余有效时间

(integer) -1                                                          -1表示:永不过期。 -2:k1不存在。

5.expire语法

127.0.0.1:6379[1]> expire k1 20 设置k1的生命时间是20s。过时自动删除。

(integer) 1                                                          设置成功:返回1。

6.type语法

127.0.0.1:6379> type k1 查看k1的存储的值的数据类型。

string none(k1不存在)、string、list、set、zset、hash。

7.rename语法

127.0.0.1:6379> rename k1 kk1 重命名k1为kk1

OK

8.del语法

127.0.0.1:6379> del k1 k2 删除k1、k2等

(integer) 2                              删除成功的个数。

2.string 字符串

令中set/get居多。

username zhangsan

id 1620014                        准备工作:设置这样几个string类型的数据

age 20

adddress suzhou

1.set语法(string赋值)

127.0.0.1:6379> set username zhanmusi 赋值,如果已经赋值了,就覆盖。

OK

2.get语法(string获取值)

127.0.0.1:6379> get username 获取值。

"zhanmusi"

--------------------------------------------------------------------------------------------

127.0.0.1:6379> get k34 key值不存在

(nil)                                                         返回:nil

3.append语法 (尾部追加)

追加!

127.0.0.1:6379> append phone 188625841 key值不存在:创建key并赋值

(integer) 9 返回:字符串的长度。

127.0.0.1:6379> get phone

"188625841"

-------------------------------------------------------------------------------------

127.0.0.1:6379> append phone 81 key值存在:进行追加

(integer) 11                                                          返回:字符串的总长度。

127.0.0.1:6379> get phone

"18862584181"

4.strlen语法(获取string长度)

127.0.0.1:6379> strlen phone 返回字符串的长度 。

(integer) 11

5.incr语法(string数字加1)

127.0.0.1:6379> incr age 对string类型的“数字”加1

(integer) 21                                            返回integer类型的加1后的数据。

------------------------------------------------------------------------------------------

127.0.0.1:6379> incr username incr只能操作string类型的“数字”

(error) ERR value is not an integer or out of range 报错

6.decr语法(string数字减1)

127.0.0.1:6379> decr age 同上

(integer) 20

127.0.0.1:6379> decr age

(integer) 19

7.incrby语法(string数字增加任意数值)

127.0.0.1:6379> incrby age 2 有这个语法,还要上面的incr干啥啊?

(integer) 22

8.decrby语法(string增加任意数值)

127.0.0.1:6379> decrby age 2 同上

(integer) 20

9.getrange语法(截取“字符”)

127.0.0.1:6379> getrange username 0 2 0表示第一个字符

"zha"

--------------------------------------------------------------------------------------------------

127.0.0.1:6379> getrange username -4 -1 -1表示最后一个字符

"musi"

10.setrange语法(指定下标开始替换)

127.0.0.1:6379> setrange address 2 nan 从下标2开始进行替换

(integer) 6

127.0.0.1:6379> get address

"sunanu" 结果:suzhou变sunan

11.setex语法(规定生命时间)

127.0.0.1:6379> setex phone 20 151515151 设置生命时间,新值覆盖

OK

12.mset语法(赋值:多键值对)

127.0.0.1:6379> mset k1 y1 k2 v2 k3 v3 同时赋值多个键值对

OK

13.mget语法(获值:多键值对)

127.0.0.1:6379> mget k1 k2 k3 同时获取多个键值对

1) "y1"

2) "v2"

3) "v3"

3.list 有序可重复列表/链表(l)

命令中l居多。

Redis的list列表是:一个个字符串组成的一个无序可重复列表。

列表类型的数据操作总的思想是通过key和下标操作value。

1.lpush语法(list赋值:逆序赋值)

127.0.0.1:6379[1]> lpush liebiao01 abandon view java c# 这就是给无序list赋值的语法

(integer) 4

127.0.0.1:6379[1]> lpush liebiao01 python js jsp

(integer) 7                                              返回的是:这列表的长度(包含的 字符串个数)

127.0.0.1:6379[1]> lrange liebiao01 0 -1

1) "jsp" 3

2) "js" 2

3) "python" 1 注意:轮到谁,谁就在左边(最前面)。

4) "c#" 4 最后一个人永远在最左边。

5) "java" 3

6) "view" 2

7) "abandon" 1

2.rpush语法(list赋值:顺序赋值)

127.0.0.1:6379[1]> rpush liebiao02 view java c#

(integer) 3

127.0.0.1:6379[1]> rpush liebiao02 python js jsp

(integer) 6

127.0.0.1:6379[1]> lrange liebiao02 0 -1

1) "view"

2) "java"

3) "c#"

4) "python" 注意:轮到谁,谁就在最右边(最后边),所以是顺序赋值。

5) "js"

6) "jsp"

3.lrange语法(获取list的部分元素)

在上面已经用过了。

4.lpop语法(移除第一个元素,并返回之值)

127.0.0.1:6379[1]> lpop liebiao

"view"

---------------------------------------

127.0.0.1:6379[1]> lpop liebiao

"java"

5.rpop语法(移除最后一个元素,并返回之值)

127.0.0.1:6379[1]> rpop liebiao

"jsp"

6.lindex语法(按下标获取某个元素)

127.0.0.1:6379[1]> lindex liebiao 0 0:获取第一个元素

"c#"

127.0.0.1:6379[1]> lindex liebiao 2 2:获取第三个元素

"js"

127.0.0.1:6379[1]> lindex liebiao -2 -2:获取倒数第二个元素

"python"

127.0.0.1:6379[1]> lindex liebiao -1 -1:获取倒数第一个元素

"js"

7.llen语法(获取列表长度)

127.0.0.1:6379[1]> llen liebiao

(integer) 3

8.lrem语法(移除指定元素,指定个数)

语法:lrem key count value

127.0.0.1:6379[1]> rpush liebiao china china usa china uk china italia

(integer) 7

127.0.0.1:6379[1]> lrem liebiao 2 china 移除list最左边的两个China

(integer) 2 返回移除成功的个数

127.0.0.1:6379[1]> lrange liebiao 0 -1

1) "usa"                                           注意:这个count

2) "china"                                                                      count>0:从左开始移除指定个数的china

3) "uk"                                                                                    count<0:从右开始移除指定个数china

4) "china"                                                                      count=0:移除所有的china

5) "italia"

9.ltrim语法(截取指定元素并赋值给原来的list,区别于lrange)

注意:lrange是获取部分元素,原来的list是不变的。

  ltrim 是截取部分元素,然后赋给原来的list。

127.0.0.1:6379[1]> ltrim liebiao 1 2 截取原lsit的下标是1到2的元素,赋给原来的list。

OK                                                                      

127.0.0.1:6379[1]> lrange liebiao 0 -1

1) "china" 注意:string是没有这种操作的。只有getrange。

2) "uk"

10.lset语法(指定的下标,更改值)

127.0.0.1:6379[1]> lset liebiao 0 zhongguo 下标是0的元素,值更改为:zhogguo

OK

11.linsert 语法(指定的value之前/后插入元素)

语法:linsert key before/after pivot value

127.0.0.1:6379[1]> linsert liebiao after zhongguo beijing 在元素zhongguo之后插入beijing

(integer) 3

127.0.0.1:6379[1]> lrange liebiao 0 -1

1) "zhongguo"

2) "beijing"

3) "uk"

4.set 无序不重复集合(s)

命令中s居多。

Redis的set是string类型的无序不重复集合。

集合类型的数据操作总的思想是通过key确定集合

1.sadd语法(set赋值)

127.0.0.1:6379[1]> sadd set01 china usa italia china usa 注意:这里是有重复的元素的,

(integer) 3 返回set中收录的元素个数。

2.smembers语法(展示set中的全部元素)

127.0.0.1:6379[1]> smembers set01 展示:所有的元素

1) "china"

2) "italia" 上面的重复的赋值直接忽略。

3) "usa"

3.sismember语法(判断这个元素是否在此set中)

127.0.0.1:6379[1]> sismember set01 zhongguo

(integer) 0 有就返回:1 没有就返回:0

4.scard(set中有几个元素)

127.0.0.1:6379[1]> scard set01

(integer) 3

5.srem语法(移除指定的多个value)

语法:srem key value1 value2 value3

127.0.0.1:6379[1]> srem set01 china usa 移除指定的value

(integer) 2

6.srandmember语法(随机展示一个元素)

语法:srandmember key count 感觉没啥用

127.0.0.1:6379[1]> sadd set01 beijing shanghai jiangsu shangdong

(integer) 4

127.0.0.1:6379[1]> srandmember set01 count不写:随机展示一个元素

"beijing"

127.0.0.1:6379[1]> srandmember set01 3 count==3:随机展示三个元素

1) "beijing"

2) "jiangsu"

3) "shanghai"

7.spop语法(随机弹出/移除一个或多个元素)

127.0.0.1:6379[1]> sadd set01 beijing shanghai jiangsu shangdong chongqing sichuan yunnan riben taiwan HK

(integer) 10

127.0.0.1:6379[1]> spop set01 没有count:随机删除一个元素

"sichuan"

127.0.0.1:6379[1]> spop set01 3 count==3: 随机删除三个元素

注意:为何是随机?比较lpop(弹出左1)、rpop(弹出右1)!

因为:list有序、set无序。

8.smove语法(移动某元素至另一个set)

127.0.0.1:6379[1]> sadd set02 zhongguo riben meiguo

(integer) 3

127.0.0.1:6379[1]> smove set02 set01 meiguo 把set02中的meiguo移动到set01中

(integer) 1

9.sdiff(返回两个集合的差集)

127.0.0.1:6379[1]> sdiff set01 ste02 返回两个集合的差集!感觉没啥用。

10.sinter(返回两个集合的交集)

127.0.0.1:6379[1]> sinter set01 set02 返回set01和set02的交集!感觉还是没啥用。

1) "riben"

11.sunion(返回两个集合的并集)

127.0.0.1:6379[1]> sunion set01 set02 返回两个集合的并集。

5.hash(h)数据存储

Redis的hash 是一个key和value的映射表。

hash类型的数据操作总的思想是:通过key和field操作value,

key<------->field:value field:value field:value field:value

                key :数据标识

                field :域

                value:我们感兴趣的业务数据

1.hset语法(hash赋值)

127.0.0.1:6379[1]> hset user name zhangsan age 20 id 10010

(integer) 3 3: 插入成功的filed:value个数

注:其中key是user,有三对filed:value

2.hget语法(获取单个filed的值)

127.0.0.1:6379[1]> hget user name

"zhangsan"

3.hmset语法(hash赋值)

127.0.0.1:6379[1]> hmset user name zhangsan age 20 id 10010

OK

真不知道这和hset有啥区别???

4.hmget语法(获取多个filed的值)

127.0.0.1:6379[1]> hmget user name age id

1) "zhangsan"

2) "20"

3) "10010"

5.hgetall语法(展示所有的filed:value)

127.0.0.1:6379[1]> hgetall user

1) "name"

2) "zhangsan"

3) "age"

4) "20"

5) "id"

6) "10010"

6.hdel语法(删除一个、多个filed:value)

127.0.0.1:6379[1]> hdel user name age 删除name和age这两个filed

(integer) 2

127.0.0.1:6379[1]> hgetall user

1) "id"

2) "10010"

7.hlen语法(获取filed的个数)

127.0.0.1:6379[1]> hlen user

(integer) 1

8.hexists语法(判断是否存在某个filed)

127.0.0.1:6379[1]> hexists user age

(integer) 0 不存在:返回0

127.0.0.1:6379[1]> hexists user id

(integer) 1                                         存在:返回1

9.hkeys语法(展示所有的filed)

127.0.0.1:6379[1]> hkeys user

1) "id"

10.hvals语法(展示hash中所有的值)

127.0.0.1:6379[1]> hvals user 展示hash中所有的值:列表展示

1) "10010"

2) "zhangsan"

3) "20"

11.hincrby语法(指定的filed增加指定的数)

127.0.0.1:6379[1]> hincrby user age 30 年龄增加30

(integer) 70                                                  增加完的年龄

12.hincrbyfloat语法(指定的数增加指定的浮点型数)

127.0.0.1:6379[1]> hincrbyfloat user age 10.5 年龄增加10.5

"80.5"                                                                  增加完的年龄数

13.hsetnx语法(什么垃圾语法)

将哈希表 key 中的域 field 的值设置为 value ,当且仅当域 field 不存在的时候才设置,否则不设置。

6.zset有序不重复(z)

Redis的zset集合是string类型的有序不重复的集合。

  zset集合每个元素都会关联一个分数(分数可以重复)

1.zadd语法(zset赋值)

语法 : zadd key score member score member score member

127.0.0.1:6379[1]> zadd city 3000 beijing 2800 shanghai 2000 jiangsu 1800 zhejiang

(integer) 4

2.zrange语法(展示指定下标区间的元素)

127.0.0.1:6379[1]> zrange city 0 -1 不带分数展示:从头到尾

1) "zhejiang"

2) "jiangsu"

3) "shanghai"

4) "beijing"

---------------------------------------------------------------------------------------------------------------------------

127.0.0.1:6379[1]> zrange city 0 -1 withscores         带分数展示:从头到尾

1) "zhejiang"

2) "1800"

3) "jiangsu"

4) "2000"

5) "shanghai"

6) "2800"

7) "beijing"

3.zrangebyscore语法(zset排序语法)

语法:zrangebyscore key min max [WITHSCORES ] [LIMIT offset count]

127.0.0.1:6379[1]> zadd city 100 suzhou 90 nanjing 80 wuxi 60 nantong 50 changzhou 40 xuzhou 35 huaian 30 yangzhou 20 yancheng 15 taizhou 10 zhenjiang 8 lianyungang 6 suqian

(integer) 13 准备13个数据先

---------------------------------------------------------------------------------------------------------------

127.0.0.1:6379[1]> zrangebyscore city 90 100 获取[90-100]之间的数据。

1) "nanjing"

2) "suzhou"

---------------------------------------------------------------------------------------------------------------

127.0.0.1:6379[1]> zrangebyscore city 90 100 withscores 获取[90-100]之间的数据(带分数)

1) "nanjing"

2) "90"

3) "suzhou"

4) "100"

-------------------------------------------------------------------------------------------------------------

127.0.0.1:6379[1]> zrangebyscore city 90 (100 withscores 获取[90-100)之间的数据(带分数)

1) "nanjing"

2) "90"

----------------------------------------------------------------------------------------------------------------

127.0.0.1:6379[1]> zrangebyscore city 20 100 limit 1 4 获取[20-40]之间的数据。

1) "yangzhou" 从下标1开始。

2) "huaian" 截取结果中的4个数据。

3) "xuzhou"

4) "changzhou"

4.zrem语法(移除指定的一个、多个元素)

127.0.0.1:6379[1]> zrem city yancheng zhenjiang

(integer) 2

5.zcard语法(统计zset中的元素个数)

127.0.0.1:6379[1]> zcard city

(integer) 11

6.zcount语法(统计指定分数区间,元素个数)

127.0.0.1:6379[1]> zcount city 20 100 统计分数在[20-100]之间的元素个数

(integer) 8

7.zrank语法(获取指定元素的排名:从小到大)

127.0.0.1:6379[1]> zrank city suqian suqian排名最小:返回的是0。

(integer) 0

8.zscore语法(获取指定元素的分数)

127.0.0.1:6379[1]> zscore city nanjing nanjing分数是:90

"90"

127.0.0.1:6379[1]> zscore city xian xian不存在:nil

(nil)

9.zrevrank语法(获取指定元素的排名:从大到小)

127.0.0.1:6379[1]> zrevrank city suzhou suzhou排名1

(integer) 0

127.0.0.1:6379[1]> zrevrank city suqian suqian排名11

(integer) 10

10.zrevrange语法(指定下标区间:分数从大到小排序)

127.0.0.1:6379[1]> zrevrange city 0 2 withscores

1) "suzhou"

2) "100"

3) "nanjing"

4) "90"

5) "wuxi"

6) "80"

11.zrevrangebyscore语法(指定分数区间,从大到小排序)

127.0.0.1:6379[1]> zrevrangebyscore city 100 50

1) "suzhou"

2) "nanjing"

3) "wuxi"

4) "nantong"

5) "changzhou"

上面是自己做的笔记,并且全部敲了一下加深了一下印象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值