入门redis必知的基础知识

网上有很多的教程,但是大多数都零零散散入门redis的同学看起来很困难,所以这里总结了一些基础知识。

 

1.redis是什么?

  Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。

对的redis就是一个存键值对的数据库,它不仅支持简单的key-value类型的数据,同时还提供listsetzsethash等数据结构的存储。【我习惯于存简单的key-value(value都是写成需要数据结构的对象)】。

 

2.redis使用场景

  1.取最新N个数据的操作

  2.排行榜应用,TOP N 操作

  3.需要精确设定过期时间的应用

  4.计数器应用

  由于INCR等指令本身就具有原子操作的特性,所以我们完全可以利用redisINCRINCRBYDECRDECRBY等指令来实现原子计数的 效果,假如,在某种场景下有3

客户端同时读取了mynum的值(值为2),然后对其同时进行了加1的操作,那么,最后mynum的值一定是5。不少网站 都利用redis的这个特性来实现业务上的统计计数需求。

  5.Uniq操作,获取某段时间所有数据排重值

  6.实时系统,反垃圾系统

  7.Pub/Sub构建实时消息系统

  8.构建队列系统

  9.缓存

最多的是用做缓存。他的操作所读是mysql10倍不止。SET操作每秒钟 110000 ,GET操作每秒钟 81000 次。

 

3.redis数据结构

上边已经说了redis是一种高级的key:value存储系统,其中value支持五种数据类型:

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

3.1.key

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

3.2.字符串(strings

strings类型是一个很基础的数据类型,也是任何存储系统都必备的数据类型.

操作如下:

set myredis 'kmonkeywyl'get myredis

注:在遇到非字符串类型比如intredis会默认转为string.

3.3.字符串列表(lists

  redis中的lists在底层实现上并不是数组,而是链表.所以插入数据快,但定位性能操作较差。

lists的常用操作包括lpushrpushlpushlrange

操作如下:

 

//新建一个list叫做mylist,并在列表头部插入元素"1"

lpush mylist "1"

//mylist右侧插入元素"2"

rpush mylist "2"

//mylist左侧插入元素"0"

lpush mylist "0"

//列出mylist中从编号0到编号1的元素

lrange mylist 0 1

//列出mylist中从编号0到倒数第一个元素

lrange mylist 0 -1

 

  注:上边应用场景128都用到lists就会很方便,具体应用场景(消息队列,分页,博客评论)

3.3.字符串集合(sets

集合对于我们来说应该不陌生,就是我们初中学的那个集合,针对于集合有几个概念不知道你还熟悉不?取交集、取并集、取差,不熟悉的自己去熟悉去吧。

操作如下:

 

//向集合myset中加入新元素"wyl"

sadd myset "wyl"

(integer) 1

sadd myset "kmonkey"

(integer) 1

//列出集合myset中的所有元素

smembers myset

1) "wyl"

2) "kmonkey"

//判断元素1是否在集合myset中,返回1表示存在

sismember myset "wyl"

(integer) 1

//判断元素是否在集合myset中,返回0表示不存在

sismember myset "wangyanling"

(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) "wyl"

3) "2"

4) "kmonkey"

3.4.有序字符串集合(sorted sets

和上边的无须集合唯一的差别是有序的每个元素都有一个序号score,主要是便于排序

操作如下:

 

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"

3.5.哈希(hashes

这就和结构数据库类似了。我是不喜欢在redis中使用hashes的。

操作如下

 

//建立哈希,并赋值

HMSET user:001 username wylpassword 111 age 34

OK

//列出哈希的内容

127.0.0.1:6379> HGETALL user:001

1) "username"

2) "wyl"

3) "password"

4) "111"

5) "age"

6) "34"

//更改哈希中的某一个值

HSET user:001 password 12345

(integer) 0

//再次列出哈希的内容

127.0.0.1:6379> HGETALL user:001

1) "username"

2) "wyl"

3) "password"

4) "12345"

5) "age"

6) "34"

 

 

原文来自:博客园/kmonkey

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值