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