Redis 指令 学习笔记
Redis
什么是Redis
redis是一种nosql数据库,他的数据是保存在内存中,同时redis可以定时把内存数据同步到磁盘,即可以将数据持久化,还提供了多个语言的API,操作比较方便
安装redis
sudo apt-get update
sudo apt-get install redis-server
关系型数据库和非关系数据库的区别
关系型数据库表和表之间存在的关系非关系型数据库不存在表的这种概念,redis是键值对数据库,通过key查找value 所以key是唯一的
查看已安装redis信息
ps ajx|grep redis
操作Redis
对于操作redis有两种,一种是直接redis-cli ,还有一种就是使用编程语言 例python、java等等
以下操作都在Linux系统中操作
redis-cli原生操作redis
启动
redis-cli
Redis的基本数据类型
string字符串list列表hash哈希set集合sorted sets有序集合(zset)
官方学习网站
操作String
最大能存储512MB数据
设置
set key value
例
set name which
不能用同一个 key不然就会覆盖 默认设置的过期时间是永久
获取
get key
例
get name
- 设置键值及过期时间,以秒为单位
setex key seconds value
expire key seconds
例
expire name 20
```
key不存在
```
set key value ex seconds
或
setex key seconds value
```
查看过期时间
ttl key
例:
ttl name
追加
append key value
例
append name love
设置多个
mset key value key value..
例子
mset username which password 123
获取多个
mget key key key ...
例
mget username password name
key
删除
del key
例
del name
查看所有的key
keys *
查看key是否存在
exists key
查看key类型
type key
- 设置过期时间,以秒为单位,创建时没有设置过期时间则一直存在
expire key seconds
- 查看有效时间,以秒为单位
TTL key
运算
incr key
decr key
整数
incrby key increment
整数
decrby key increment
操作list
设置
lpush
左添加
```
lpush key value ```
rpush
右添加
```
rpush key value ```
- 在一个元素的前|后插入新元素
LINSERT key BEFORE|AFTER pivot value
- 在一个元素的前|后插入新元素
LINSERT key BEFORE|AFTER pivot value
查看
lrange key start stop
例 查看所有
lrange key 0 -1获得
list
的元素个数
llen key
查看位于index位置上的元素
lindex key index
删除
lpop
删除左边第一个
```
lpop key ```
rpop
删除右边第一个
```
rpop key ```
lrem
删除指定
```
lrem key count value ``` - `count > 0` 从左往右 删除数量为`count`的`value`
- `count = 0` 删除所有的 `value`
- `count < 0` 从右往左 删除数量为`count`的`value`
操作hash
设置
hset key field value
例
hset user username which获取
hget key field
例
hget user username删除
hdel key field
例
hdel user username设置多个
hmset key field value [field value]
获取多个
hmget key field field
获取全部
field value
hgetall key
获取所有的
field
hkeys key
获取所有的
value
hvals key
获取
field
的个数
hlen key
其它
- 判断属性是否存在
HEXISTS key field
- 删除属性及值
HDEL key field [field ...]
- 返回值的字符串长度
HSTRLEN key field
操作set
设置
sadd key value [value]
获取
smembers key
删除
srem
指定删除
srem key member
spop
随机删除
spop key
移动一个集合的值到另一个集合
smove oldkey newkey member
判断集合存在某个值
sismember key value
交集
sinter key1 key2 ..
把 key1 key2的交集合并到
newkey
sinterstore newkey key1 key2
并集
sunion key1 key2 ...
把 key1 key2的并集合并到
newkey
sunionstore newkey key1 key2
差集
sdiff key1 key2
把 key1 key2的差集合并到
newkey
sdiffstore newkey key1 key2
获取集合个数
scard key
随机返回一个
srandmember key
操作zset
设置
zadd key score member
获取
zrange
正序
```
zrange key start stop ```
zrevrange
倒序
```
zrevrange key start stop ```
删除
zrem key member
索引
zrank
正序
```
zrank key member ``
zrevrank
反序
```
zrevrank key member ```
查看有序集合元素数
zcard key
返回值在min-max之间的
zcount key min max
查看score值
zscore key member
发布订阅
- 发布者不是计划发送消息给特定的接收者(订阅者),而是发布的消息分到不同的频道,不需要知道什么样的订阅者订阅
- 订阅者对一个或多个频道感兴趣,只需接收感兴趣的消息,不需要知道什么样的发布者发布的
- 发布者和订阅者的解耦合可以带来更大的扩展性和更加动态的网络拓扑
- 客户端发到频道的消息,将会被推送到所有订阅此频道的客户端
- 客户端不需要主动去获取消息,只需要订阅频道,这个频道的内容就会被推送过来
消息的格式
- 推送消息的格式包含三部分
- part1:消息类型,包含三种类型
- subscribe,表示订阅成功
- unsubscribe,表示取消订阅成功
- message,表示其它终端发布消息
- 如果第一部分的值为subscribe,则第二部分是频道,第三部分是现在订阅的频道的数量
- 如果第一部分的值为unsubscribe,则第二部分是频道,第三部分是现在订阅的频道的数量,如果为0则表示当前没有订阅任何频道,当在Pub/Sub以外状态,客户端可以发出任何redis命令
- 如果第一部分的值为message,则第二部分是来源频道的名称,第三部分是消息的内容
命令
- 订阅
SUBSCRIBE 频道名称 [频道名称 ...]
- 取消订阅
- 如果不写参数,表示取消所有订阅
UNSUBSCRIBE 频道名称 [频道名称 ...]
- 发布
PUBLISH 频道 消息
主从配置
- 一个master可以拥有多个slave,一个slave又可以拥有多个slave,如此下去,形成了强大的多级服务器集群架构
- 比如,将ip为192.168.1.10的机器作为主服务器,将ip为192.168.1.11的机器作为从服务器
- 设置主服务器的配置
bind 192.168.1.10
- 设置从服务器的配置
- 注意:在slaveof后面写主机ip,再写端口,而且端口必须写
bind 192.168.1.11
slaveof 192.168.1.10 6379
- 在master和slave分别执行info命令,查看输出信息
- 在master上写数据
set hello world
- 在slave上读数据
get hello
设置密码
找到配置文件下的requirepass foobared 修改之后重启服务

redis配置文件路径:etc/redis/redis.conf
Python操作Redis
先安装一个第三方库redis
pip install redis
连接
导入:
import redis
re = redis.Redis(host="IP地址", port=6379, db=0,password='密码’) 出现以下提示说明需要输入密码:

Redis 指令 学习笔记的更多相关文章
- Redis:学习笔记-03
Redis:学习笔记-03 该部分内容,参考了 bilibili 上讲解 Redis 中,观看数最多的课程 Redis最新超详细版教程通俗易懂,来自 UP主 遇见狂神说 7. Redis配置文件 启动 ...
- Redis:学习笔记-02
Redis:学习笔记-02 该部分内容,参考了 bilibili 上讲解 Redis 中,观看数最多的课程 Redis最新超详细版教程通俗易懂,来自 UP主 遇见狂神说 4. 事物 Redis 事务本 ...
- Redis in Action : Redis 实战学习笔记
1 1 1 Redis in Action : Redis 实战学习笔记 1 http://redis.io/ https://github.com/antirez/redis https://ww ...
- Redis:学习笔记-04
Redis:学习笔记-04 该部分内容,参考了 bilibili 上讲解 Redis 中,观看数最多的课程 Redis最新超详细版教程通俗易懂,来自 UP主 遇见狂神说 10. Redis主从复制 1 ...
- Redis:学习笔记-01
Redis:学习笔记-01 该部分内容,参考了 bilibili 上讲解 Redis 中,观看数最多的课程 Redis最新超详细版教程通俗易懂,来自 UP主 遇见狂神说 1. Redis入门 2.1 ...
- Redis——入门学习笔记
Redis学习 说到前面:这篇笔记只是我作为一个Redis新手,从0到认知的一个过程.后续会持续深入学习. 学习初衷和计划 学习Redis,因为这是热门技术,必须掌握的技术,别人都会我不会.就这一点就 ...
- memcache/redis 缓存学习笔记
0.redis和memcache的区别 a.redis可以存储除了string之外的对象,如list,hash等 b.服务器宕机以后,redis会把内存的数据持久化到磁盘上,而memcache则不会 ...
- 十五分钟介绍 Redis数据结构--学习笔记
下面是一个对Redis官方文档<A fifteen minute introduction to Redis data types>一文的翻译,如其题目所言,此文目的在于让一个初学者能通过 ...
- Linux man 用法小结(Linux指令学习笔记)
今天买了一本<<Linux命令行与shell脚本编程大全>>,想利用暑假放假的时间系统的学习一下 Linux的shell脚本.今天看了一下书,才发现我之前学习,把Linux s ...
随机推荐
- ubuntu 环境下 安装虚拟环境
sudo pip3 install virtualenv 安装虚拟环境 sudo pip3 instal virtualenvwrapper #安装虚拟环境扩展包 编辑home目录下面的.bashrc ...
- Element transfer 两边数据(左右)的显示问题?
本仙今天遇到这个穿梭框的问题 这个是我前几天刚换的(原来用的是iview的,换成了element ) 别问我为什么,用过iview的都知道 转入正题 问题:从后台获取的数据全部都显示在了我的左边框中 ...
- 获取Control请求路径
对于多个uri映射到同一个control方法时,需根据不同的uri返回的数据结构进行区分,因此需要再方法体内获取到RequestUri,再对其做相应的判断实现对应的业务逻辑 @Resource pri ...
- 通过maven-assembly-plugin将Springboot项目打包成tar.gz压缩包,在Linux环境可执行脚本直接安装成系统服务
1.在pom.xml中添加maven-assembly-plugin依赖,同时需将默认生成的spring-boot-maven-plugin依赖删除,否则最终打出的发行包启动会有问题 <plug ...
- Connection failed Flowsocketconnector Failed to connect to target addressWindows error10061:由于目标计算机积极拒绝,无法连接
使用bitbise时报上面错误 : 解决方法 :卸载软件并删除相关的文件 (包含bitvise 及注册表中的文件)重新安装后能连接
- SqlServer2012,设置指定数据库对指定用户开放权限
REVOKE VIEW ANY DATABASE TO [public] --这个是取消数据库公开的权限,也就是除了sa角色外任何人都不能查看数据库 -- 现在用sa用户登录Use [要开放权限的数据 ...
- 《修炼之道:.NET开发要点精讲》读书笔记(二)
1.简述.NET中CTS.CLS以及CLR的含义与作用. A:CTS指公共类型系统,是.NET平台中各种语言必须遵守的类型规范:CLS指公共语言规范,是.NET平台中各种语言必须遵守的语言规范:CLR ...
- Python中的迭代器、生成器
from collections import Iterable, Iterator 1. 可迭代(iterable)对象 参考官网链接 class I: def __init__(self, v): ...
- [html]CSS中的margin、border、padding区别
图解CSS padding.margin.border属性W3C组织建议把所有网页上的对像都放在一个盒(box)中,设计师可以通过创建定义来控制这个盒的属性,这些对像包括段落.列表.标题.图片以及层. ...
- 20155312 张竞予 Exp 8 Web基础
Exp 8 Web基础 目录 基础问题回答 (1)什么是表单 (2)浏览器可以解析运行什么语言. (3)WebServer支持哪些动态语言 实践过程记录 1.Web前端:HTML 2.Web前端jav ...
