[Redis学习教程2]之Redis的具体使用和Redis的数据类型及操作

 Redis   高蒙   阅读(1547)   评论(0)   2016-02-17 13:14:52    Redis是什么 Redis教程 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数据库中存储的一条记录极为相似。

具体的省略,后面补充。




相关文章



我要评论


站长昵称:(*)

输入内容:


评论列表


高蒙

男,程序猿一枚

 

人生要是没有理想, 那跟一条咸鱼有什么分别。


关于我

  http://www.shuchengxian.com

高蒙个人博客是以PHP技术为主的程序员个人博客。博客主要发布php开发中遇到的问题以及解决办法,同时个人博客也分享网站模板素材,jquery插件等方面素材。


站点声明:相关侵权、举报、投诉及建议等,请发E-mail:936594075#qq.com(#替换成@)。

Copyright © 2018, www.shuchengxian.com, All rights reserved. 个人博客皖公网安备 34152302000022号 皖ICP备15015490号

关键词:个人博客,PHP博客,PHP博客程序,高蒙博客,高蒙个人博客,php程序员博客,程序员个人博客