广告
返回顶部
首页 > 资讯 > 数据库 >redis初识
  • 902
分享到

redis初识

redis初识 2015-08-13 11:08:54 902人浏览 猪猪侠
摘要

Redis介绍 redis是什么 redis是一种基于键值对的NoSQL数据库,与很多键值对数据库不同,redis中的值string,hash,list,set,zset,geo等多种数据机构和算法组成,因为redis会将所有的数

redis初识

Redis介绍

redis是什么

redis是一种基于键值对的NoSQL数据库,与很多键值对数据库不同,redis中的值string,hash,list,set,zset,geo等多种数据机构和算法组成,因为redis会将所有的数据都放在内存中,所以他的读写性能非常惊人,不仅如此,redis还可以将内存中的数据利用快照和日志的形式保存在硬盘上,redis还提供了键过期,发布订阅,流水线等附加功能

redis重要性

1.速度快

Redis所有的数据都存放在内存中
Redis使用C语言实现
Redis使用单线程架构

2.基于键值对的数据结构服务器

5中数据结构:字符串,哈希,列表,集合,有序集合

3.丰富的功能

提供了键过期功能,可以实现缓存
提供了发布订阅功能,可以实现消息系统
提供了pipeline功能,客户端可以将一批命令一次性传到Redis,减少了网络开销

4.简单稳定

源码很少,3.0版本以后5万行左右.
使用单线程模型法,是的Redis服务端处理模型变得简单.
不依赖操作系统的中的类库

5.客户端语言多

java,PHP,python,C,c++,nodejs

6.持久化

RDB和AOF

7.主从复制

8.高可用分布式

哨兵
集群

redis应用场景

1.缓存-键过期时间

缓存session会话
缓存用户信息,找不到再去Mysql查,查到然后回写到redis

2.排行榜-列表&有序集合

热度排名排行榜
发布时间排行榜

3.计数器应用-天然支持计数器

帖子浏览数
视频播放次数
商品浏览数

4.社交网络-集合

踩/赞,粉丝,共同好友/喜好,推送,打标签

5.消息队列系统-发布订阅

配合elk实现日志收集

redis单节点安装部署

1.目录规划

/data/soft/                         #redis下载目录
/opt/redis_{PORT}/{conf,logs,pid}   #redis安装目录
/data/redis_{PORT}/redis_{PORT}.rdb #redis数据目录
/root/scripts/redis_shell.sh        #redis运维脚本

2.安装命令

### 编辑hosts文件

[root@db01 ~]# tail -3 /etc/hosts
10.0.0.51 db01    
10.0.0.52 db02    
10.0.0.53 db03

###
yum install GCc -y
#make distclean  && make
mkdir -p /data/soft
mkdir -p /data/redis_6379
mkdir -p /opt/redis_6379/{conf,pid,logs}
cd /data/soft/
wget Http://download.redis.io/releases/redis-3.2.9.tar.gz
tar zxf redis-3.2.9.tar.gz -C /opt/
ln -s /opt/redis-3.2.9/ /opt/redis
cd /opt/redis
make && make install

3.配置文件

cat >/opt/redis_6379/conf/redis_6379.conf <

4.启动redis

redis-server /opt/redis_6379/conf/redis_6379.conf

5.检查是否启动

ps -ef|grep redis
netstat -lntup|grep redis

6.进入redis

redis-cli

redis全局操作命令

0.写入key
set k1 v1
set k2 v2
set k3 v3

1.查看所有的key!线上禁止使用!
keys *

2.查看有多少个key,注意,是估值
DBSIZE

3.查看是否存在这个KEY
EXISTS k1
EXISTS k1 k2 k3 

状态码:
0   表示这个key不存在
1   表示这个key存在
N   表示有的N个key存在

4.删除key(无论是什么数据类型,都可以删除)
DEL k1
DEL k1 k2 k3

状态码:
0   表示这个key不存在
1   表示这个key存在,并且删除成功
N   表示有的N个key存在,并且删除N个Key


5.键过期
设置过期时间
EXPIRE k1 100

取消过期时间,不修改key原来的值
PERSIST k1  

状态码:
0: 表示这个key不存在
1: 表示这个key存在,并且设置过期时间成功

查看key是否过期
TTL k1

状态码:
-1 :这个key存在,并且永不过期
-2 :这个key不存在
N  :这个key存在,并且在N秒后过期    

结论:
过期后的key直接会被删除

6.键的数据类型
type key

字符串操作

Redis并不是简单地key-value存储,实际上他是一个数据结构服务器,支持不同类型的值.
Redis Strings
这是最简单的Redis类型,如果你只用这种类型,Redis就像一个持久化的memcache服务器(注:memcache的数据仅保存在内存中,服务器重启后,数据将丢失.)
操作命令:

  • 通常用SET command 和 GET command来设置和获取字符串值
  • INCR命令将字符串值解析成整型.将其加1,最后结果保存为新的字符串,类似命令: INCRBY,DECR,DECRBY
  • MSET和MGET可以一次存储或获取多个key对应的值.
  • EXISTS命令返回1或0标识给定key的值是否存在.
    使用DEL命令可以删除key对应的值,
    DEL命令返回1或0标识是被删除(值存在)或者没被删除(key对应的值不存在).
  • Type命令可以返回key对应的存储类型
  • 可以对key设置一个超时时间,当这个时间到达后被删除
  • PERSIST命令去除超时时间
1.设置一个key
set k1 v1 

2.查看一个key
get k1 

3.设置多个key
MSET k1 v1 k2 v2 k3 v3

4.查看多个key
MGET k1 k2 k3

5.天然计数器
加1:
set k1 1
INCR k1
get k1 

加N:
INCRBY k1 100

减N:
INCRBY k1 -1 

减N:
INCRBY k1 -N

列表

插入列表:
LPUSH:从列表左侧插入数据
RPUSH:从列表右侧插入数据
最后LRANGE可以从list中取出一定范围的元素
Pop,从list中删除元素并同时返回删除的值,可以在左边或右边操作.

LPUSH list1 A 
LPUSH list1 B 
LPUSH list1 C
RPUSH list1 D
 
查看列表的长度:
LLEN list1

查看列表的内容:
db01:6379> LRANGE list1 0 -1
1) "C"
2) "B"
3) "A"
4) "D"

删除列表元素:
LPOP: 从列表左侧删除
RPOP: 从列表右侧删除

LPOP list1 
RPOP list1

删除列表内容:
DEL list1

哈希

Hash看起来就像一个hash的样子.由键值对组成
HMSET指令设置hash中的多个域
HGET取回单个域.
HMGET取回一系列的值

生成一个hash类型:
HMSET user:1 name xiaozhang job it age 28
HMSET user:2 name abc job it age 28
HMSET user:3 name def job it age 28

查看hash里的一个值
HMGET user:1 name

查看hash里的多个值
HMGET user:1 name age job

查看hash里的所有的值
HGETALL user:1

mysql数据和redis哈希对比:
user表

uid  name       job  age 
1    xiaozhang  it   28 
2    xiaoya     it   28 
3    yazhang    it   28 

mysql查询数据
select * from user where id = 3

redis缓存mysql数据
名字  key1 k1值 key2 k2的值 key3 k3的值
uid:1 name xiaozahng job it age 28
uid:2 name xiaoya job it age 28
uid:3 name yazahng job it age 28

集合

  • 集合是字符串的无序排列
  • SADD指令把新的元素添加到set中
  • 和list类型不同,set集合不允许出现重复的元素
  • srem用来删除指定的值
  • sdiff计算后者集合的差异成员
  • sinter计算集合的交集
  • suNIOn计算集合的并集
创建集合
db01:6379> SADD set1 1 2 3
(integer) 3
db01:6379> SADD set2 1 3 5 7
(integer) 4

查看集合的成员:
db01:6379> SMEMBERS set1
1) "1"
2) "2"
3) "3"
db01:6379> SMEMBERS set2
1) "1"
2) "3"
3) "5"
4) "7"

db01:6379> srem set1 2 4
(integer) 2
db01:6379> smembers set1
1) "1"
2) "3"

查看集合的差集,以前面一个集合为基准对比后面的,前面有,后面没有则选出来
db01:6379> SDIFF set1 set2
1) "2"
db01:6379> SDIFF set2 set1
1) "7"

查看集合的交集
db01:6379> SINTER set1 set2
1) "1"
2) "3"
3) "5"

查看集合的并集
db01:6379> SUNION set1 set2
1) "1"
2) "2"
3) "3"
4) "5"
5) "7"
db01:6379> SUNION set1 set2 set3
1) "1"
2) "2"
3) "3"
4) "5"
5) "7"
6) "9"

有序集合添加成员

zadd key score member [score member]

zadd linux5 100 banzhang
zadd linux5 99  xuewei 10 zuzhang 150 mage 

计算成员个数
zcard linux5

计算某个成员分数
zscore key member 

zscore linux5 banzhang 


计算成员排名
zrank key member    
zrevrank key member

升序排行 zrank linux5 xuewei            
降序排行 zrevrank linux5 xuewei


删除成员
zrem key member
zrem user:ranking oldzhang


增加成员分数
zincrby key increment member

zincrby linux5 1 xuewei 


返回指定排名范围的成员
升序 zrang      key start end [wishscores]   
降序 zrevrange key start end [wishscores]

127.0.0.1:6379> ZRANGE linux5 0 -1 withscores
1) "c"
2) "10"
3) "b"
4) "99"
5) "a"
6) "100"
7) "d"
8) "150"
127.0.0.1:6379> ZREVRANGE linux5 0 -1 withscores
1) "d"
2) "150"
3) "a"
4) "100"
5) "b"
6) "99"
7) "c"
8) "10"



返回指定分数范围的成员
zrangebyscore    key min max [wishscores] [limit offect count]
zrevrangebyscore key max min [wishscores] [limit offect count]

zrangebyscore     linux5 100 200 withscores
ZREVRANGEBYSCORE  linux5 200 99 withscores

返回指定分数范围成员个数
zount key min max 
zcount linux5 100 200 

systemd管理redis

cat >/lib/systemd/system/redis.service <
您可能感兴趣的文档:

--结束END--

本文标题: redis初识

本文链接: https://www.lsjlt.com/news/3424.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 初识Redis
    初识Redis NoSQL是什么? 数据库: 用来存储数据的仓库 NoSQL: 不仅仅是SQL,是许多非关系型数据库的统称,但本质上还是存储数据的仓库 为什么需要NoSQL? 解决了高并发的读写问题 解决了海量数据的高效率存储和...
    99+
    2019-03-22
    初识Redis
  • redis初识
    redis介绍 redis是什么 redis是一种基于键值对的NOsql数据库,与很多键值对数据库不同,redis中的值string,hash,list,set,zset,geo等多种数据机构和算法组成,因为redis会将所有的数...
    99+
    2015-08-13
    redis初识
  • Redis(一):初识Redis内存数据库与持久化
    什么是Redis内存数据库?Redis,本质上上一个KEY-VALUE类型的内存数据库,整个数据库都加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因此它是纯内存操作,Red...
    99+
    2022-10-18
  • 初识Java
    一、Java语言概述 1.1 Java是什么 Java是一种优秀的程序设计语言,它具有令人赏心悦目的语法和易于理解的语义 不仅如此,Java还是一个有一系列计算机软件和规范形成的技术体系,这个技术体系提供了完整的用于软件开发和跨平台部署...
    99+
    2023-10-24
    java 开发语言
  • 初识 Python
    1.源码安装 ipython 1.2.1[root@Client-1]# tar -xf ipython 1.2.1.tar.gz[root@Client-1]cd ipython 1.2.1[root@Client-1 ipython-1...
    99+
    2023-01-31
    Python
  • 初识MySQL
    💕与其抱怨生活的不公,不如积极行动改变它。💕 🐼作者:不能再留遗憾了🐼 🎆专栏:MySQL学习🎆 &...
    99+
    2023-09-01
    mysql 数据库 postgresql
  • 初识Android.bp
               初识Android.bp 前言    最近在捣鼓Android 9 和10的build系统,看到一篇比较好的博...
    99+
    2022-06-06
    Android
  • 初识EXPDP
    EXPDP介绍 使用dump文件集导入数据和元数据的工具。dump文件集只能被IMPDP导入。dump文件集是由表数据,数据库对象元数据,控制信息组成。由专用的二进制格式编写。这些dump文件由server...
    99+
    2022-10-18
  • 初识Node.js
    1、Node.js是什么 [1]Node是一个服务器端 JavaScript 解释器,可是真的以为JavaScript不错的同学学习Node就能轻松拿下,那么你就错了,总结:水深不深我还不知道,不过确实不浅...
    99+
    2022-06-04
    Node js
  • 初识urllib
    使用urllibrequest:  是最基本的 HTTP 请求模块,可以用来模拟发送请求,只需要给库方法传入URL以及额外的参数,就可以模拟实现这个过程了。error:  异常处理模块,如果出现请求错误, 可以捕获这些异...
    99+
    2023-01-30
    urllib
  • 初识django
    HTTP协议   超文本传输协议 四大特性:   1.基于TCP/IP作用在应用层上的协议   2.基于请求响应   3.无连接   4.无状态 数据格式之请求   请求首行   请求头(一堆k,v键值对)   /r/n   请求体 数据...
    99+
    2023-01-31
    django
  • 初识Tornado
    引言 回想Django的部署方式 以Django为代表的python web应用部署时采用wsgi协议与服务器对接(被服务器托管),而这类服务器通常都是基于多线程的,也就是说每一个网络请求服务器都会有一个对应的线程来用web应用(如Dja...
    99+
    2023-01-31
    Tornado
  • 初识Flask
    Flask简介       Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,微框架中的“微”意味着 Flask 旨在保持核心简单而易于扩展。默认情况下,Flask 不包含数据库抽...
    99+
    2023-01-31
    Flask
  • Python初识
    1.python介绍 python是一门先编译后解释的语言 动态脚本语言 PyCodeObject和pyc文件 pyCodeObject是python编译器真正的编译成的结果。当python程序运行时,编译的结果是保存在位于内存中的PyCo...
    99+
    2023-01-31
    Python
  • 初识P3P
    Google 标签: P3P, 第三方cookie, 隐私策略, http head P3P主要应用于网站跨域访问方面,全称为隐私偏好设定平台(platform for privacy preference, P3P)。而谈到P3P就不得不...
    99+
    2023-01-31
    P3P
  • 初识Linux_3
    1,find 目录 条件 [处理命令]-默认是print操作2,find d6 -name "*cpp" -exec rm{} ";"(或者‘;’或者/;都是Ok的),这条命令的含义是找到d6文件夹中所有以.cpp结尾的文件然后将其进行删除...
    99+
    2023-01-31
  • 初识Python
      Python是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年。  Python是纯粹的自由软件,源代码和解释器CPython遵循GPL(GNU Gene...
    99+
    2023-01-31
    Python
  • html初识
    web标准web准备介绍:w3c:万维网联盟组织,用来制定web标准的机构(组织)web标准:制作网页遵循的规范web准备规范的分类:结构标准、表现标准、行为标准。结构:html。表示:css。行为:Javascript。web准备总结:结...
    99+
    2023-01-30
    html
  • 初始 redis
    官方定义: Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月1...
    99+
    2016-06-01
    初始 redis
  • Redis初探
       大概在2010年的时候,有一次和一个同事聊天,那个时候知道了Redis,对于技术的追随至今,还没有下载一个Redis版本玩玩,   只有1万多行代码,以性能惊人...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作