redis数据库的了解和使用

Redis 了解入门


redis 启动方法

  • WINDOWS系统中在cmd界面切换到redis安装盘中,然后输入redis-cli启动服务

redis数据结构有5个类型

  1. 字符串(strings)
  2. 字符串列表(lists)
  3. 字符串集合(sets)
  4. 有序字符串集合(sorted sets)
  5. 哈希(hashes)

而关于key,有几个注意点:

  1. key不要太长,尽量不要超过1024字节,这不仅消耗内存,而且会降低查找的效率;
  2. key也不要太短,太短的话,key的可读性会降低;
  3. 在一个项目中,key最好使用统一的命名模式,例如user:10000:passwd。

一、redis数据结构 – strings 操作方式

如果只使用redis中的字符串类型,且不使用redis的持久化功能,那么,redis就和memcache非常非常的像了。这说明strings类型是一个很基础的数据类型,也是任何存储系统都必备的数据类型。

案例
  • //设置字符串类型
set mystr "hello world!" 
  • //读取字符串类型
get mystr

字符串类型的用法就是这么简单,因为是二进制安全的,所以你完全可以把一个图片文件的内容作为字符串来存储。

二、redis数据结构 – lists 操作方式

redis的另一个重要的数据结构叫做lists,翻译成中文叫做“列表”。

首先要明确一点,redis中的lists在底层实现上并不是数组,而是链表,也就是说对于一个具有上百万个元素的lists来说,在头部和尾部插入一个新元素,其时间复杂度是常数级别的,比如用LPUSH在10个元素的lists头部插入新元素,和在上千万元素的lists头部插入新元素的速度应该是相同的。

虽然lists有这样的优势,但同样有其弊端,那就是,链表型lists的元素定位会比较慢,而数组型lists的元素定位就会快得多。

lists的常用操作包括LPUSH、RPUSH、LRANGE等。我们可以用LPUSH在lists的左侧插入一个新元素,用RPUSH在lists的右侧插入一个新元素,用LRANGE命令从lists中指定一个范围来提取元素。

案例
  • //新建一个list叫做mylist,并在列表左边插入元素"1"
lpush mylist "1" 
  • //在mylist右侧插入元素"2"
 rpush mylist "2" 
  • //列出mylist中从0到最后一个的元素
lrange mylist 0 -1 

lists的应用相当广泛,比如:

  1. 我们可以利用lists来实现一个消息队列,而且可以确保先后顺序
  2. 利用LRANGE还可以很方便的实现分页的功能。
  3. 在博客系统中,每片博文的评论也可以存入一个单独的list中。

三、redis数据结构 – 集合

redis的集合,是一种无序的集合,集合中的元素没有先后顺序。
集合相关的操作也很丰富,如添加新元素、删除已有元素、取交集、取并集、取差集等。

案例
  • //向集合myset中加入一个新元素"one"
sadd myset "one" 
(integer) 1
sadd myset "two"
(integer) 1
  • //列出集合myset中的所有元素
smembers myset
1) "one"
2) "two"
  • //判断元素1是否在集合myset中,返回1表示存在,返回0表示不存在
 sismember myset "one" 
 (integer) 1
 sismember myset "three" 
 (integer) 0
  • //新建一个新的集合yourset
sadd yourset "1" 
(integer) 1
sadd yourset "2"
(integer) 1
smembers yourset
1) "1"
2) "2"
  • //对两个集合求并集
sunion myset yourset 
1) "1"
2) "one"
3) "2"
4) "two"

对于集合的使用,也有一些常见的方式,比如,QQ有一个社交功能叫做“好友标签”,大家可以给你的好友贴标签,比如“大美女”、“土豪”、“欧巴”等等,这时就可以使用redis的集合来实现,把每一个用户的标签都存储在一个集合之中。

四、redis数据结构 – 有序集合

有序集合中的每个元素都关联一个序号(score),这便是排序的依据。
很多时候,我们都将redis中的有序集合叫做zsets,这是因为在redis中,有序集合相关的操作指令都是以z开头的,比如zrange、zadd、zrevrange、zrangebyscore等等

案例
  • //新增一个有序集合myzset,并加入一个元素baidu.com,给它赋予的序号是1:
zadd myzset 1 baidu.com 
(integer) 1
  • //向myzset中新增一个元素360.com,赋予它的序号是3
zadd myzset 3 360.com
(integer) 1
  • //向myzset中新增一个元素google.com,赋予它的序号是2
zadd myzset 2 google.com 
(integer) 1
  • //列出myzset的所有元素,同时列出其序号,可以看出myzset已经是有序的了。
 zrange myzset 0 -1 with scores 
 1) "baidu.com"
2) "1"
3) "google.com"
4) "2"
5) "360.com"
6) "3"
  • //只列出myzset的元素
 zrange myzset 0 -1 
 1) "baidu.com"
2) "google.com"
3) "360.com"

五、redis数据结构 – 哈希

哈希是从redis-2.0.0版本之后才有的数据结构。
hashes存的是字符串和字符串值之间的映射,比如一个用户要存储其全名、姓氏、年龄等等,就很适合使用哈希。

案例
  • //建立哈希,并赋值
HMSET user:001 username antirez password P1pp0 age 34 
OK
  • //列出哈希的内容
HGETALL user:001 
1) "username"
2) "antirez"
3) "password"
4) "P1pp0"
5) "age"
6) "34"
  • //更改哈希中的某一个值
HSET user:001 password 12345 
(integer) 0
  • //再次列出哈希的内容
HGETALL user:001 
1) "username"
2) "antirez"
3) "password"
4) "12345"
5) "age"
6) "34"

有关hashes的操作,同样很丰富,需要时,大家可以从这里查询

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值