《云计算》-redis数据库:redis数据库常用操作、增删改查、数据情况、设置缓存时间、数据类型

4 案例4:Redis数据库常用操作
4.1 问题

对Redis数据库各数据类型进行增删改查操作
数据类型分别为strings、hash表、list列表
设置数据缓存时间
清空所有数据
对数据库操作

  
  
  • 1
  • 2
  • 3
  • 4
  • 5

4.2 步骤

实现此案例需要按照如下步骤进行。

步骤一:redis数据类型

1)String字符串

set key value [ex seconds] [px milliseconds] [nx|xx]

设置key及值,过期时间可以使用秒或毫秒为单位

setrange key offset value

从偏移量开始复写key的特定位的值

 [root@redisA 6379]# redis-cli -h 192.168.4.51 -a 123456
192.168.4.51:6379> set  first  "hello world"
OK
192.168.4.51:6379> setrange  first  6  "Redis"     //改写为hello Redis
(integer) 11
192.168.4.51:6379> get first
"hello Redis"

  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

strlen key,统计字串长度

192.168.4.51:6379> strlen first
(integer) 11

  
  
  • 1
  • 2

append key value 存在则追加,不存在则创建key及value,返回key长度

192.168.4.51:6379> append myname jacob
(integer) 5

  
  
  • 1
  • 2

setbit key offset value 对key所存储字串,设置或清除特定偏移量上的位(bit),value值可以为1或0,offset为0~2^32之间,key不存在,则创建新key

192.168.4.51:6379> setbit  bit  0  1          //设置bit第0位为1
(integer) 0
192.168.4.51:6379> setbit  bit  1  0          //设置bit第1位为0 
(integer) 0

  
  
  • 1
  • 2
  • 3
  • 4

bitcount key 统计字串中被设置为1的比特位数量

192.168.4.51:6379> setbit  bits 0 1        //0001
(integer) 0
192.168.4.51:6379> setbit  bits 3 1        //1001
(integer) 0
192.168.4.51:6379> bitcount  bits            //结果为2
(integer) 2

  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

记录网站用户上线频率,如用户A上线了多少天等类似的数据,如用户在某天上线,则使用setbit,以用户名为key,将网站上线日为offset,并在该offset上设置1,最后计算用户总上线次数时,使用bitcount用户名即可,这样即使网站运行10年,每个用户仅占用10*365比特位即456字节

192.168.4.51:6379> setbit  peter  100  1        //网站上线100天用户登录了一次
(integer) 0
192.168.4.51:6379> setbit  peter  105  1        //网站上线105天用户登录了一次
(integer) 0
192.168.4.51:6379> bitcount  peter
(integer) 2

  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

decr key 将key中的值减1,key不存在则先初始化为0,再减1

192.168.4.51:6379> set z 10
OK
192.168.4.51:6379> decr z
(integer) 9
192.168.4.51:6379> decr z
(integer) 8
192.168.4.51:6379> decr bb
(integer) -1
192.168.4.51:6379> decr bb
(integer) -2

  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

decrby key decrement 将key中的值,减去decrement

192.168.4.51:6379> set count 100
OK
192.168.4.51:6379> DECRBY cc 20    //定义每次减少20(步长)
(integer) -20
192.168.4.51:6379> DECRBY cc 20
(integer) -40

  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

get key 返回key存储的字符串值,若key不存在则返回nil,若key的值不是字串,则返回错误,get只能处理字串

192.168.4.51:6379> get a
(nil)

  
  
  • 1
  • 2

getrange key start end 返回字串值中的子字串,截取范围为start和end,负数偏移量表示从末尾开始计数,-1表示最后一个字符,-2表示倒数第二个字符

192.168.4.51:6379> set x 123456789
OK
192.168.4.51:6379> getrange x -5 -1
"56789"
192.168.4.51:6379> getrange x 0 4
"12345"

  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

incr key 将key的值加1,如果key不存在,则初始为0后再加1,主要应用为计数器

192.168.4.51:6379> set page 20
OK
192.168.4.51:6379> incr page
(integer) 21

  
  
  • 1
  • 2
  • 3
  • 4

incrby key increment 将key的值增加increment

192.168.4.51:6379> set x 10
OK
192.168.4.51:6379> incr x
(integer) 11
192.168.4.51:6379> incr x
(integer) 12

  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

incrbyfloat key increment 为key中所储存的值加上浮点数增量 increment

192.168.4.51:6379> set num 16.1
OK
192.168.4.51:6379> incrbyfloat num 1.1
"17.2"

  
  
  • 1
  • 2
  • 3
  • 4

mset key value [key value …] 设置多个key及值,空格分隔,具有原子性

192.168.4.51:6379> mset j 9  k 29
OK

  
  
  • 1
  • 2

mget key [key…] 获取一个或多个key的值,空格分隔,具有原子性

192.168.4.51:6379> mget j k
1) "9"
2) "29"

  
  
  • 1
  • 2
  • 3

2)list列表

Redis的list是一个字符队列,先进后出,一个key可以有多个值

lpush key value [value…] 将一个或多个值value插入到列表key的表头,Key不存在,则创建key

192.168.4.51:6379> lpush list a b c        //list值依次为c b a
(integer) 3

  
  
  • 1
  • 2

lrange key start stop 从开始位置读取key的值到stop结束

192.168.4.51:6379> lrange list 0 2        //从0位开始,读到2位为止
1) "c"
2) "b"
3) "a"
192.168.4.51:6379> lrange list 0 -1    //从开始读到结束为止
1) "c"
2) "b"
3) "a"
192.168.4.51:6379> lrange list 0 -2        //从开始读到倒数第2位值
1) "c"
2) "b"

  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

lpop key 移除并返回列表头元素数据,key不存在则返回nil

192.168.4.51:6379> lpop list        //删除表头元素,可以多次执行
"c"
192.168.4.51:6379>  LPOP list
"b"

  
  
  • 1
  • 2
  • 3
  • 4

llen key 返回列表key的长度

192.168.4.51:6379>  llen list
(integer) 1

  
  
  • 1
  • 2

lindex key index 返回列表中第index个值

192.168.4.51:6379> lindex  list  1
"c"

  
  
  • 1
  • 2

lset key index value 将key中index位置的值修改为value

192.168.4.51:6379> lpush list a b c d 
(integer) 5
192.168.4.51:6379> lset list 3 test        //将list中第3个值修改为test
OK

  
  
  • 1
  • 2
  • 3
  • 4

rpush key value [value…] 将value插入到key的末尾

192.168.4.51:6379> rpush list3  a b c    //list3值为a b c
(integer) 3
192.168.4.51:6379> rpush list3 d    //末尾插入d
(integer) 4

  
  
  • 1
  • 2
  • 3
  • 4

rpop key 删除并返回key末尾的值

192.168.4.51:6379> RPOP list3 
"d"

  
  
  • 1
  • 2

3)hash表

hset key field value 将hash表中field值设置为value

192.168.4.51:6379> hset site google 'www.g.cn'
(integer) 1
192.168.4.51:6379> hset site baidu 'www.baidu.com'
(integer) 1

  
  
  • 1
  • 2
  • 3
  • 4

hget key filed 获取hash表中field的值

192.168.4.51:6379> hget site google
"www.g.cn"

  
  
  • 1
  • 2

hmset key field value [field value…] 同时给hash表中的多个field赋值

192.168.4.51:6379> hmset site google www.g.cn  baidu www.baidu.com
OK

  
  
  • 1
  • 2

hmget key field [field…] 返回hash表中多个field的值

192.168.4.51:6379> hmget site google baidu
1) "www.g.cn"
2) "www.baidu.com"

  
  
  • 1
  • 2
  • 3

hkeys key 返回hash表中所有field名称

192.168.4.51:6379> hmset site google www.g.cn baidu www.baidu.com
OK
192.168.4.51:6379> hkeys  site
1) "google"
2) "baidu"

  
  
  • 1
  • 2
  • 3
  • 4
  • 5

hgetall key 返回hash表中所有key名和对应的值列表

192.168.4.51:6379> hgetall site
1) "google"
2) "www.g.cn"
3) "baidu"
4) "www.baidu.com"

  
  
  • 1
  • 2
  • 3
  • 4
  • 5

hvals key 返回hash表中所有key的值

192.168.4.51:6379> hvals site
1) "www.g.cn"
2) "www.baidu.com"

  
  
  • 1
  • 2
  • 3

hdel key field [field…] 删除hash表中多个field的值,不存在则忽略

192.168.4.51:6379> hdel  site  google  baidu
(integer) 2

  
  
  • 1
  • 2
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

尹汇川

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

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

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

打赏作者

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

抵扣说明:

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

余额充值