redis简介

Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker. It supports data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs, geospatial indexes with radius queries and streams. Redis has built-in replication, Lua scripting, LRU eviction, transactions and different levels of on-disk persistence, and provides high availability via Redis Sentinel and automatic partitioning with Redis Cluster.

http://redisdoc.com/bitmap/index.html  #这是redis中文翻译文档的地址

Redis是一个开源(BSD许可),内存数据结构存储,用作数据库,缓存和消息代理。 它支持数据结构,如字符串,哈希表,列表,集合,带有范围查询的排序集,位图,超级日志,具有半径查询和流的地理空间索引。 Redis具有内置复制,Lua脚本,LRU驱逐,事务和不同级别的磁盘持久性,并通过Redis Sentinel提供高可用性并使用Redis Cluster自动分区。

简单来讲redis就是一种基于内存的nosql(也可以叫缓存数据库),支持事务,能够实现定时将数据写入磁盘(数据持久化),支持多种数据结构且能够备份。

由于redis是属于nosql,基于内存存储,实时变化的数据可以直接存储在redis中。它是内存磁盘同步数据库,可以将数据存储至磁盘,也可以从磁盘之中恢复数据,同时也支持订阅与发布和主从同步。

redis日常操作

首先下载源码包,编译安装,将redis-server redis-cli 拷贝到/usr/bin 或者添加到路径。

wget http://download.redis.io/releases/redis-5.0.0.tar.gz

tar -xzvf redis-5.0.0.tar.gz

yum install gcc gcc-c++

make install

cp src/redis-server /usr/bin

cp src/redis-client /usr/bin

如果使用yum安装可能只是3的版本,版本号较低。

redis 的默认端口号6379
将配置文件中:daemonize 改为yes 让redis 在后台运行。

启动redis:redis-server redis.conf

关闭redis:redis-cli shutdown

连接到数据库:redis-cli -h 127.0.0.1 -p 6379         # host可以更改,在配置文件中bind后面接上你要对外提供链接的地址——改为你网卡的真实地址,如192.168.27.128。

切换数据库:select 3  #redis的数据库是通过数字来记录的——1,2,3,4,5,6  非关系型数据库切换数据库select DB-name 关系型数据库use DB-name

redis操作语句

字符串的操作:string

添加:set  key  value

查看:get key

删除:del  key    #删除多个使用空格分隔

设置过期时间:set key value EX timeout

查看过期时间:ttl  key

查看redis的所有key:key  *

127.0.0.1:6379> set username jerry

OK

127.0.0.1:6379> get username

"jerry"

127.0.0.1:6379> set school nanjiang ex 100

OK

127.0.0.1:6379> get school

"nanjiang"

127.0.0.1:6379> ttl school

(integer) 86

127.0.0.1:6379> keys *

1) "name"

2) "jerry"

3) "age"

4) "name1"

5) "school"

6) "lan"

7) "username"

127.0.0.1:6379> del username

(integer) 1

127.0.0.1:6379> keys *

1) "name"

2) "jerry"

3) "age"

4) "name1"

5) "lan"

127.0.0.1:6379> set uuu aaa

OK

127.0.0.1:6379> get uuu

"aaa"

127.0.0.1:6379> set uuu iii

OK

127.0.0.1:6379> get uuu

"iii"

列表的操作:list

在列表左边添加元素:lpush key value

在列表右边添加元素:rpush key value

查看列表中的所有元素:lrange key start stop  #列表有下标位从0开始

移除并且返回列表key的头元素:lpop key

移除并且返回列表key的尾元素:rpop key

返回指定的第几个元素:lindex  key index

查看列表的长度:llen key

删除列表指定内容:lrem key values

删除整个list:del key

127.0.0.1:6379> lpush lan java perl php python

(integer) 6

127.0.0.1:6379>

127.0.0.1:6379> lrange lan 0 -1

1) "python"

2) "php"

3) "perl"

4) "java"

5) "java"

6) "python"

127.0.0.1:6379> rpush lan ttt aaa

(integer) 8

127.0.0.1:6379> lrange lan 0 -1

1) "python"

2) "php"

3) "perl"

4) "java"

5) "java"

6) "python"

7) "ttt"

8) "aaa"

127.0.0.1:6379> lpop lan

"python"

127.0.0.1:6379> rpop lan

"aaa"

127.0.0.1:6379> lrange lan 0 -1

1) "php"

2) "perl"

3) "java"

4) "java"

5) "python"

6) "ttt"

127.0.0.1:6379> lindex lan 1

"perl"

127.0.0.1:6379> lindex lan 0

"php"

127.0.0.1:6379> lindex lan 2

"java"

127.0.0.1:6379> llen lan

(integer) 6

127.0.0.1:6379> lrem lan 2 java

(integer) 2

127.0.0.1:6379> lrange lan 0 -1

1) "php"

2) "perl"

3) "python"

4) "ttt"

127.0.0.1:6379> del lan

(integer) 1

127.0.0.1:6379> keys *

1) "name"

2) "jerry"

3) "age"

4) "name1"

集合的操作:set

set的特点:自动去重

集合的交集,并集,差集:

sinter key1 key2 (交集)     sunion key1 key2 (并集)       sdiff key1 key2   (key1-key2)      sdiff key2 key1

添加元素到set : sadd key  values

查看集合的元素:smembers key

集合的长度:scard key

删除集合的具体内容:srem key values

删除整个集合: del key

127.0.0.1:6379> sadd age 67

(integer) 1

127.0.0.1:6379> smembers age

1) "12"

2) "13"

3) "14"

4) "15"

5) "21"

6) "67"

127.0.0.1:6379> srem age 12 13 14 15

(integer) 4

127.0.0.1:6379> smembers age

1) "21"

2) "67"

127.0.0.1:6379> scard age

(integer) 2

127.0.0.1:6379> del age

(integer) 1

127.0.0.1:6379> keys *

1) "name"

2) "jerry"

3) "name1"

127.0.0.1:6379> sadd age1 22 33 44 55

(integer) 4

127.0.0.1:6379> sadd age2 33 44 66 77

(integer) 4

127.0.0.1:6379> sinter age1 age2

1) "33"

2) "44"

127.0.0.1:6379> sunion age1 age2

1) "22"

2) "33"

3) "44"

4) "55"

5) "66"

6) "77"

127.0.0.1:6379> sdiff age1 age2

1) "22"

2) "55"

127.0.0.1:6379> sdiff age2 age1

1) "66"

2) "77"

哈希表的操作:hash

添加哈希值:hset key filed value

删除哈希值:hdel key filed

查看字段的值:hget key filed

查看所有的字段和值:hgetall key

查看所有字段:hkeys key

查看所有的值:hvals key

查看字段是否存在:hexists key filed

获得哈希总键值对个数:hlen key

127.0.0.1:6379> hset jerry gender male

(integer) 1

127.0.0.1:6379> hget jerry gender

"male"

127.0.0.1:6379> hgetall jerry

1) "high"

2) "170"

3) "age"

4) "22"

5) "weight"

6) "100"

7) "gender"

8) "male"

127.0.0.1:6379> hdel jerry age high weight

(integer) 3

127.0.0.1:6379> hgetall jerry

1) "gender"

2) "male"

127.0.0.1:6379> hkeys jerry

1) "gender"

127.0.0.1:6379> hvals jerry

1) "male"

127.0.0.1:6379> hexists jerry gender

(integer) 1

127.0.0.1:6379> hexists jerry age

(integer) 0

127.0.0.1:6379> hexists jerry high

(integer) 0

127.0.0.1:6379> hlen jerry

(integer) 1

redis——事务

隔离性和原子性
隔离:事务中的命令都会序列化,按顺序执行,不会被其他命令所干扰
原子性:事务中的命令要么全部被执行,要么全没有被执行。

开启一个事务:multi

提交一个事务: exec

回滚事务:discard

127.0.0.1:6379> multi

OK

127.0.0.1:6379> keys *

QUEUED

127.0.0.1:6379> exec

1) 1) "age1"

2) "name"

3) "jerry"

4) "name1"

5) "age2"

127.0.0.1:6379> multi

OK

127.0.0.1:6379> keys *

QUEUED

127.0.0.1:6379> discard

OK

127.0.0.1:6379> discard

(error) ERR DISCARD without MULTI

redis——发布与订阅

发布:
publish channel message
订阅:
subscribe channel

终端一:

127.0.0.1:6379> publish ch1 hello

(integer) 0

127.0.0.1:6379> publish ch1 hello

(integer) 1

127.0.0.1:6379> publish ch2 hello

(integer) 0

127.0.0.1:6379> publish ch2 hello

(integer) 1

127.0.0.1:6379> publish ch1 hello

(integer) 1

终端二:

127.0.0.1:6379> subscribe ch1 ch2

Reading messages... (press Ctrl-C to quit)

1) "subscribe"

2) "ch1"

3) (integer) 1

1) "subscribe"

2) "ch2"

3) (integer) 2

1) "message"

2) "ch2"

3) "hello"

1) "message"

2) "ch1"

3) "hello"

Redis——从入门到放弃的更多相关文章

  1. Redis 从入门到放弃

    Redis 从入门到放弃 http://www.iocoder.cn/Fight/Redis-went-from-getting-started-to-quitting/

  2. redis从入门到放弃 -> 部署方案

    单点部署方案 环境准备: [root@localhost ~]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) [root@ ...

  3. redis从入门到放弃 -> 简介&概念

    一.redis简介 Redis是一款开源的.高性能的键-值存储.它常被称作是一款数据结构服务器. 当值支持的主要数据类型为:字符串(strings)类型,括哈希(hashes).列表(lists).集 ...

  4. 编程从入门到放弃(Java)

      1.Java入门篇 1.1 基础入门和面向对象 1.1.1 编程基础 [01] Java语言的基本认识 [02] 类和对象 [03] 类的结构和创建对象 [04] 包和访问权限修饰符 [05] 利 ...

  5. 后端API入门到放弃指北

    后端API入门学习指北 了解一下一下概念. RESTful API标准] 所有的API都遵循[RESTful API标准]. 建议大家都简单了解一下HTTP协议和RESTful API相关资料. 阮一 ...

  6. Go从入门到放弃

    Go语言介绍 为什么你应该学习Go语言? 开发环境准备 从零开始搭建Go语言开发环境 VS Code配置Go语言开发环境 Go语言基础 Go语言基础之变量和常量 Go语言基础之基本数据类型 Go语言基 ...

  7. Scrapy入门到放弃01:开启爬虫2.0时代

    前言 Scrapy is coming!! 在写了七篇爬虫基础文章之后,终于写到心心念念的Scrapy了.Scrapy开启了爬虫2.0的时代,让爬虫以一种崭新的形式呈现在开发者面前. 在18年实习的时 ...

  8. CYQ.Data 从入门到放弃ORM系列:开篇:自动化框架编程思维

    前言: 随着CYQ.Data 开始回归免费使用之后,发现用户的情绪越来越激动,为了保持这持续的激动性,让我有了开源的念头. 同时,由于框架经过这5-6年来的不断演进,以前发的早期教程已经太落后了,包括 ...

  9. [精品书单] C#/.NET 学习之路——从入门到放弃

    C#/.NET 学习之路--从入门到放弃 此系列只包含 C#/CLR 学习,不包含应用框架(ASP.NET , WPF , WCF 等)及架构设计学习书籍和资料. C# 入门 <C# 本质论&g ...

随机推荐

  1. Centos7 [ubuntu] 安装pycharm2019.1.3并永久破解教程

    一.安装pycharm2019专业版并激活步骤 1.拉取安装包 # wget   https://download.jetbrains.com/python/pycharm-professional- ...

  2. Python爬虫解析网页的4种方式 值得收藏

    用Python写爬虫工具在现在是一种司空见惯的事情,每个人都希望能够写一段程序去互联网上扒一点资料下来,用于数据分析或者干点别的事情. ​ 我们知道,爬虫的原理无非是把目标网址的内容下载下来存储到内存 ...

  3. Layui我提交表单时,table.reload(),表格会请求2次,是为什么?

    重载两次是因为搜索按钮用的是button 改成<a class="layui-btn" data-type="reload">搜索</a> ...

  4. lower_bound() 函数使用详解

    简介 lower_bound()函数是用来求一个容器中,第一个大于等于所要查找的元素的地址,具体的原理是二分查找,因此它只能用于非降序序列. 他有三个参数,第一个参数是容器的初始地址,第二个参数是容器 ...

  5. teraterm中log中加入时间戳

    步骤: 1.Setup->Additional settings->log->Timestamp(Local Time) 2.记录log.File->log(Teraterm. ...

  6. MySQL(window10)加载配置文件的顺序

    mysql加载配置的顺序为:(mysql --help中有详细的说明) C:\WINDOWS\my.ini C:\WINDOWS\my.cnf C:\my.ini C:\my.cnf D:***\my ...

  7. minst.npz下载

    keras.datasets.mnist数据集下载地址 下载地址:链接: https://pan.baidu.com/s/1Rr-aHsIIEQx2z6W3qvMmhQ 提取码: 8w15

  8. The 2019 ICPC China Nanchang National Invitational and International Silk-Road Programming Contest - F.Sequence(打表+线段树)

    题意:给你一个长度为$n$的数组,定义函数$f(l,r)=a_{l} \oplus a_{l+1} \oplus...\oplus a_{r}$,$F(l,r)=f(l,l)\oplus f(l,l+ ...

  9. python基础day05

    上节内容变量if else注释 # ''' msg ''' 3个引号 打印多行 ', "" 双单引号的意义是一样的 缩进 本节内容pycharm使用 集成开发环境(IDE,Inte ...

  10. spring mvc绑定参数之 类型转换 有三种方式:

    spring mvc绑定参数之类型转换有三种方式: 1.实体类中加日期格式化注解(上次做项目使用的这种.简单,但有缺点,是一种局部的处理方式,只能在本实体类中使用.方法三是全局的.) @DateTim ...