php redis 新增数据类型,[Redis学习教程2]之Redis的具体使用和Redis的数据类型及操作...

本文主要介绍Redis的具体使用和Redis的数据类型及操作?

一、Redis的数据类型

1)、string数据类型(默认)。

2)、List链表数据类型。

3)、set集合数据类型。

4)、Sort set排序集合数据类型。

5)、hash数据类型

二、key的操作

在redis里面,除了 空格 和 "\n" 不能作为名字的组成内容外,其他的内容都是可以直接作为key的名称做成部分,名称的长度不做要求。

但是key不要太长,占内存,查询慢。

redis默认的数据类型是string类型。

key键的操作

描述

keys *

返回当前数据库中的所有 key

exists key

返回key是否存在

del key1 key2 ... keyN

删除key

type key

返回key的value类型

keys pattren

返回匹配指定模式的所有 key

rename oldkey newkey

重新修改 key 名字

expire key seconds

为 key 指定过期的时间

dbsize

返回当前数据库中的 key 的数量

ttl key

返回 key 的剩余过期时间

select db-index

选择数据库

move key db-index

将 key 从当前的数据库移动到指定数据库

flushdb

删除当前数据库中所有 key

flushall

删除所有数据库中的所有 key

拓展:

查看redis默认的数据库个数,最多16数据库。

vim redis.conf

查看:databases 16 数据库下标是从0开始的。

例如:select 1 代表打开的是第二个数据库。

Redis的数据类型以及操作

1)、string字符串类型操作

string是redis最基本的类型。

redis的string可以包含任何数据。包括jpg图片或者序列化的对象。

单个的value值最大的上限是1G字节。

如果只是使用string类型,redis可以被看做是持久化的memcache。

注意:redis默认的数据类型是string类型。

string的操作

描述

set key value

设置 key 对应的值为string 类型的 value

mset key1 value1 ...keyN valueN

一次设置多个 key 值

mget key1 key2 ...keyN

一次获取多个 key 值

incr key

对 key 进行加加操作,并且返回新的值

decr key

对 key 进行减减操作,并且返回新的值

incrby key integer

同incr,加指定的值

decrby key intrger

同decr,减指定的值

append key value

给指定 key 的字符串值加上 value

substr key start end

返回截取过的 key 的字符串值

incr 递增 相当于 ++

新key:创建key并累加1,其值为1.

已有key:key的值加1,并且key的value数据类型必须是整型。

decr 递减 相当于 --

decr的操作和incr操作一致,只不过是减1。

substr:对内容进行截取,包括start和end标记位置内容。

2)、List链表数据类型操作

list类型其实就是一个双向链表,通过push,pop操作从list链表的头部或者尾部添加删除元素。这使得list链表既可以做栈,也可以做队列。

栈:上进上出。

队:上进下出。

list链表的操作

描述

lpush key string

在 key 对应 list 的头部添加字符串元素

rpop key

从 list链表 的尾部删除元素,并且返回删除的元素

llen key

返回 key 对应 list链表中 key 的长度,key不存在返回0,如果 key 对应类型不是 list 返回错误

lrange key start end

返回指定区间的元素,下标从0开始

rpush key string

在 key 对应 list 的尾部添加字符串元素

lpop key

从 list 的头部删除元素,并返回删除元素

ltrim key start end

截取 list,保留指定区域内元素

例如:select * from member order by logintime desc limit 10;

如果通过list链表轻松的实现保持系统最新的登录10个用户,每进来新的用户就删除一个旧的用户,每次就可以从链表中直接获得需要的数据,极大的节省的资源消耗。

3)、set集合数据类型操作

redis的set是string类型的无序集合。

set元素最大包含(2的32次方-1)个元素。

关于set集合类型除了资本的添加删除操作,其他有用的操作还包含集合的取并集(union),交集(intersection),差集(difference)。通过这些操作可以很容易的实现sns中好友推荐的功能。

注意:每个集合中的各个元素不能重复。

该类型应用场合:QQ好友 推荐。

tom朋友圈:mary jack xioaming wang5 wang6

linken朋友圈:yuehan daxiong luce wang5 wang6

返回 set 的元素个数set集合的操作

描述

sadd key member

添加一个 string 元素到 key 对应的 set 集合中,成功返回1,如果已存在,返回0,key 对应的 set 不存在返回错误

srem key member1 member2... memberN

从 key 对应 set 中移除给定的元素,成功返回1

smove p1 p2 member

从 p1 对应 set 中移除 member 并添加到 p2 对应 set 中

scard key

sismember key member

判断 member 是否在 set 集合中

sinter key1 key2 ...keyN

返回所有指定key的并集

sunion key1 key2 ...keyN

返回所有指定key的交集

sdiff key1 key2 ...keyN

返回所有指定key的差集

smembers key

返回 key 对应 set 的所有元素,结果是无序的

创建tom集合

sadd tomFri mary

创建linken集合

sadd linkenFri mary

sinter tomFri linkenFri 交集

sunion tomFri linkenFri 并集

sdiff tomFri linkenFri 差集

4)、Sort set排序集合数据类型

和set 一样sort set也是string类型元素的集合

不同的是每个元素都会关联一个权(score)。

通过权值可以有序的获取集合中的元素。

sort set使用场景:

获取热门帖子(回复量)信息:select * from message order by backnum desc limit 5

上面的语句在mysql中也能实现,但是比较耗费mysql数据库资源。

排序集合中的每个元素都是值、权的组合。

Sort set集合的操作

描述

zadd key score member

添加元素到集合,元素在集合中存在则更新对应的 score

zrem key member

删除指定元素。返回1,表示成功;如果元素不存在返回0

zincrby key incr member

按照指定的 key 添加对应的 member 的 score(incr)值,返回score值

zrank key member

返回指定元素集合中的排名(下标),集合中元素是按 score 从小到大排序的

zrevrank key member

同上,返回的集合中元素是按 score 从大到小排序

zrevrange key start end

按照给定的区间元素,值由高到低排序,返回有序结果

zcard key

返回集合中元素的个数

zscore key element

返回给定元素对应的 score

zremrangebyrank key min max

删除集合中排名在给定区间的元素(权值由小到大排序)

创建sort set 排序集合

zadd hotmessage 100 1

zremrangebyrank key 0 0 删除一个元素,包含自身元素

关于重复值:

set类型:没有。

list链表类型:有。(当新用户登录的时候,此用户之前一次的登录记录还是在的)

Sort set 类型:没有。

5、hash数据类型

hash数据类型存储的数据与mysql数据库中存储的一条记录极为相似。

具体的省略,后面补充。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值