redis的基本操作(String、hash、list、set、zset)

1.基于String类型操作

进入客户端

[xiaokang@hadoop redis-3.2.8]$ bin/redis-server redis.conf 
[xiaokang@hadoop redis-3.2.8]$ bin/redis-cli -h hadoop -p 6379

查看所有的key

#在生产环境中,不建议使用此命令
hadoop:6379> keys *
(empty list or set)

设置指定key的值

hadoop:6379> set hello world
OK
#获取指定key的值
hadoop:6379> get hello
"world"

修改指定key的值

hadoop:6379> set hello xiaoliu
OK
hadoop:6379> get hello
"xiaoliu"

批量设置和批量获取

hadoop:6379> mset hello1 world1 hello2 world2
OK
hadoop:6379> mget hello1 hello2
1) "world1"
2) "world2"

过期时间

#设置一个key,并指定过期时间
hadoop:6379> setex hello3 5 world
OK
hadoop:6379> keys *
1) "hello2"
2) "hello1"
3) "hello"
4) "hello3"
hadoop:6379> keys *
1) "hello2"
2) "hello1"
3) "hello"

使用incr来执行一些累加器的应用
incr +1请求
decr -1请求

hadoop:6379> set PV 1
OK
hadoop:6379> get PV
"1"
#PV中所存储的数字值+1
hadoop:6379> incr PV
(integer) 2
hadoop:6379> get PV
"2"

将key所存储的值加上给定的增量值

hadoop:6379> incrby PV 2
(integer) 4

将key所存储的值加上给定的浮点增量值

hadoop:6379> incrbyfloat PV 0.8
"4.8"

2.基于hash类型操作

设置hash的指定字段
设置大key、小key

hadoop:6379> hset userinfo userid 1
(integer) 1
hadoop:6379> hset userinfo username zhangsan
(integer) 1

获取hash字段

hadoop:6379> hset userinfo userid 1
(integer) 1
hadoop:6379> hset userinfo username zhangsan
(integer) 1
hadoop:6379> hget userinfo userid
"1"
hadoop:6379> hget userinfo username
"zhangsan"

获取hash中所有的key,value

#把userinfo中所有字段和值都取出来
hadoop:6379> hgetall userinfo
1) "userid"
2) "1"
3) "username"
4) "zhangsan"

获取hash中所有的key

hadoop:6379> hkeys userinfo
1) "userid"
2) "username"

删除userinfo下的userid

hadoop:6379> hdel userinfo userid
(integer) 1
hadoop:6379> hkeys userinfo
1) "username"

3.基于list类型的操作

lpush将一个或多个值插入到列表头部
lrange表示获取指定范围的元素

hadoop:6379> lpush list 1 2 3 4
(integer) 4
hadoop:6379> lrange list 0 -1
1) "4"
2) "3"
3) "2"
4) "1"

4.基于set类型的操作

添加元素

hadoop:6379> sadd set_test 1
(integer) 1
#具有去重功能
hadoop:6379> sadd set_test 1 2 3 4
(integer) 3

获取所有的元素

hadoop:6379> smembers set_test
1) "1"
2) "2"
3) "3"
4) "4"

获取元素的个数

hadoop:6379> scard set_test
(integer) 4

使用set结构来保存网站的UV

hadoop:6379> sadd uv:2020-10-22 001 002 003
(integer) 3
hadoop:6379> sadd uv:2020-10-22 004
(integer) 1
#统计2020-10-22一共有多少个独立用户访问过
hadoop:6379> scard uv:2020-10-22
(integer) 4

5.针对key的操作

删除一个key,对应的数据结构

hadoop:6379> keys *
1) "userinfo"
2) "hello1"
3) "set_test"
4) "list"
5) "uv:2020-10-22"
6) "hello"
7) "hello2"
8) "PV"
hadoop:6379> del list
(integer) 1
hadoop:6379> keys *
1) "userinfo"
2) "hello1"
3) "set_test"
4) "uv:2020-10-22"
5) "hello"
6) "hello2"
7) "PV"

判断set_test这个key是否存在
返回1表示存在,返回0表示不存在

hadoop:6379> exists set_test
(integer) 1
hadoop:6379> exists set_test1
(integer) 0

6.对ZSet(有序set)的操作

redis有序集合和集合一样也是string类型元素的集合,且不允许重复的成员
它用来保存需要排序的数据,例如排行榜。一个班的语文成绩,一个公司的员工工资,一个论坛的帖子等。
有序集合中,每个元素都带有score(权重),以此来对元素进行排序
它有三个元素:key、member和score。以语文成绩为例,key是考试名称(期中考试、期末考试等),member是学生名字,score是成绩。

向zset中添加页面的pv值

hadoop:6379> zadd pv 100 page1.html 200 page2.html 300 page3.html
(integer) 3

获取一共有几个页面

hadoop:6379> zcard pv
(integer) 3

给page1.html页面增加pv值

hadoop:6379> zincrby pv 10 page1.html
"110"

创建两个保存pv的zset

hadoop:6379> zadd pv_zset1 10 page1.html 20 page2.html
(integer) 2
hadoop:6379> zadd pv_zset2 5 page1.html 10 page2.html
(integer) 2
hadoop:6379> zinterstore pv_zset_result 2 pv_zset1 pv_zset2
(integer) 2

获取zset中的所有成员

hadoop:6379> zrange pv_zset_result 0 -1 withscores
1) "page1.html"
2) "15"
3) "page2.html"
4) "30"

求page1.html在页面pv中的排名

#按升序统计(从小到大)
hadoop:6379> zrank pv_zset_result page1.html
(integer) 0
hadoop:6379> zrank pv_zset_result page2.html
(integer) 1

求page1.html在页面pv中的排名

#这个操作效率很高,并不是重新排序,只是把zset反转
#按降序统计(从大到小)
hadoop:6379> zrevrank pv_zset_result page1.html
(integer) 1
hadoop:6379> zrevrank pv_zset_result page2.html
(integer) 0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小刘新鲜事儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值