Redis常用配置

  • daemonize -》是否是后台进程
  • port -》对外端口
  • logfile -》Redis 系统日志
  • dir -》Redis 工作目录

Redis的链接

redis-cli -h 127.0.0.1 -p 6379

测试链接

使用ping返回PONG

查看配置

通过config get *命令可以查看

通过配置文件方式启动

找到redis所在的目录以下是mac系统的

cd /usr/local/etc

复制一份新的配置文件

cat redis.conf| grep -v "#" |grep -v "^$" >redis-6382.log

配置文件内容如下

daemonize yes #是否后台启动
port 6382 #启动端口修改为6382
dir /usr/local/var/db/redis/ #文件的位置,比如log
logfile "6382.log" #log文件的名字

启动

redis-server redis-6382.conf

查看进程

ps -ef |grep redis-server |grep 6382

通用命令

keys:遍历出所有的key,O(n)时间复杂度,生产环境不建议多用,可以在从节点用。

dbsize:计算key的总数,可以线上用,redis自带的计数器时间复杂度O(1)

exists key:检查key是否存在,时间复杂度O(1)

del key:删除key-value,时间复杂度O(1)

expire key seconds:keys在seconds秒后过期,时间复杂度O(1)

ttl key:查看key剩余的过期时间,-1表示存在但是没有过期时间,-2表示不存在。时间复杂度O(1)

type key:键的类型,时间复杂度O(1)

persist key:去掉key的过期时间,时间复杂度O(1)

数据类型

string,hash,list,set,sorted set

编码形式

raw,int,embstr,hashtable,ziplist,linkedlist,intest,skiplist

单线程

为什么?

纯内存

非阻塞IO(epoll)

避免线程切换和资源竞争

需要注意的:

1.一次只执行一条命令

2.拒绝长命令,比如keys *

字符串

结构和命令

结构

key hello value world
key counter value 1
key bit valuee 1010101010
key j value json结构

最大512M。

命令

get,set,del

incr key 自增1

decr 自减1

incrby key k,自增k

decrby key k 自减k

场景

  • 缓存
  • 计数器
  • 分布式锁

计数器

incr userid:pageview

缓存

比如访问1.mp4,首先访问redis如果没有再访问mysql,mysql查到先反给redis,然后返回给客户。redis充当缓存的功能。

分布式id生成器

set setnx setxx

set key value #设置key O(1)

setnx key value #key不存在才设置 类似insert O(1)

setxx key value #key存在才设置 类似update O(1)

mset key1 key2 key3 O(n)

mget key1 key2 key3 #节省了网络时间,批量查询,如果量大可以拆分。O(n)

getset key value,设置新值返回老值 O(1)

append key value 增加 O(1)

strlen key 返回字符串的长度 O(1)

incybyfloat key 3.5 #增加key对应之3.5

getrange key start end #类似切片

setrange key start end

hash

key {field:value}

命令

hget key field O(1)

hset key field O(1)

hdel key field O(1)

hexists key field O(1)

hlen key field O(1)

hmget key field1 file2

hmset key field1 file2

记录网站每个用户个人网页的访问量

hincrby user:1:info pageiew count

其他命令

hgetall key O(n)

hvals key O(n)

hkeys key O(n)

列表

TimeLine

更新使用Lpush

Lrange 获取数据

其他

blpop,lpop的阻塞版本,timeout是阻塞超时

组合使用

LPUSH +LPOP =stack

LPUSH +RPOP =Queue

LPUSH +LTRIM =列表大小有限制

LPUSH +BRPOP =Message Queue

集合

sadd 添加

scrad

sismenember

srandmemeber

spop 集合弹出

smembers

实战

添加标签,共同关注

其他操作

sdiff sinter sunion

场景应用

SADD 标签

SPOP/SRANDMEMBER 随机数的场景

SADD+SINTER 共同好友等功能

有序集合

zadd key socre element #添加元素

zscore key element

zcrad key #返回元素的个数

zrank

zrem

zrange 0 -1 #返回指定索引范围内的升序元素

zcount startscore endscore

实战

排行榜 根据时间戳或者阅读数之类的。

redis基础操作概念等笔记的更多相关文章

  1. 【转】Redis 基础操作和命令

    笔记 Redis提供了六种基本的数据结构:String,Hash,List,Set,Sorted Set,HyperLogLog. Redis的特点:纯内存操作,单线程工作模型,非阻塞I/O多路复用. ...

  2. Redis 基础操作

    [Redis 基础操作] 1.ECHO message. Returns message. 2.PHING Returns PONG if no argument is provided, other ...

  3. redis基础操作~~数据备份与恢复、数据安全、性能测试、客户端连接、分区

    数据备份与恢复 数据备份redis save 命令用于创建当前数据库的备份. redis 127.0.0.1:6379> SAVE OK 该命令将在 redis 安装目录中创建dump.rdb文 ...

  4. 三、Redis基础操作

    前言: Redi是key-value的NoSQL,我们用Redis提供的redis-cli就能操作String类型key和各种数据类型value.但是放入的不是特定类型数据,添加的都是一个一个Stri ...

  5. redis 基础操作教程

    1.linux 安装redis : Linux 下安装 下载地址:http://redis.io/download,下载最新稳定版本. 本教程使用的最新文档版本为 2.8.17,下载并安装: $ wg ...

  6. redis基础操作

    /** * redis的Java客户端Jedis测试验证 * * @author */ public class Test { /** * 非切片客户端链接 */ private Jedis jedi ...

  7. Java代码redis基础操作

    maven依赖包: <dependency> <groupId>redis.clients</groupId> <artifactId>jedis< ...

  8. redis简单操作

    一.redis 基础操作 1.1.string 类型及操作 string 是最简单的类型,一个key对应一个value,string类型是二进制安全的.redis的string可以包含任何数据. 1. ...

  9. REDIS基础笔记

    Redis基础笔记 资源链接 简介 简介 安装 五种数据类型及相应命令 1. 字符串类型 2. 散列类型 3. 列表类型 4. 集合类型 5. 有序集合 其他 事务 SORT 生存时间 任务队列 发布 ...

随机推荐

  1. Unity 屏幕坐标到UGUI RectTransform本地坐标的转换

    public static bool ScreenPointToLocalPointInRectangle(RectTransform rect, Vector2 screenPoint, Camer ...

  2. python 画正态曲线

    import numpy as np import matplotlib.pyplot as plt import math # Python实现正态分布 # 绘制正态分布概率密度函数 u = 0 # ...

  3. Git详细操作

    Git详细操作 一.本地配置 1公钥钥配置 1.参考帮助文档:https://gitee.com/help/ 仓库管理 =公钥管理 =生成/添加SSH公钥 ssh-keygen -t rsa -C & ...

  4. 初学java2 认识面向对象 以及运算符 输入输出

    面向对象 面向对象是一种程序设计思路,在设计一个程序时不需要考虑内部如何实现,只需要想他要实现什么功能 就像在餐馆点菜一样,你不需要知道他应该怎么做,你只需要决定你要吃什么 面向对象三大特征 继承 封 ...

  5. connect() failed (111: Connection refused) while connecting to upstream的解决

    遇到这种情况, 首先 1.检查php-fpm是否启动---------如果没启动->启动, 2.用命令 netstat -ant | grep 9000 查看php-fpm进程,如果没启动-&g ...

  6. Windows 查看端口使用、根据pid查找引用程序

    1.查看特定端口的使用情况:以80端口为例,输入命令 netstat -aon|findstr "80" 2.根据PID号找到对应的程序:以PID是6776为例,输入命令taskl ...

  7. requests模块高级操作之proxies

    一.代理proxy 概念:代理服务器 作用:请求和响应的转发 免费代理 www.goubanjia.com 快代理 西祠代理 代理精灵(付费) 匿名度: 透明:对方服务器知道你使用代理也知道你真实ip ...

  8. Flutter 36: 图解自定义 View 之 Canvas (三)

    小菜继续学习 Canvas 的相关方法: drawVertices 绘制顶点 小菜上次没有整理 drawVertices 的绘制方法,这次补上:Vertice 即顶点,通过绘制多个顶点,在进行连线,多 ...

  9. opencv读取图像python和c++版本的结果不同

    问题: 在读取同一张图像时,python读取的结果和c++读取的结果差异较大,测试图像中最大误差达到16. 原因: python的opencv采用的是4.1.1,c++采用的是3.1.0,在解析JPE ...

  10. Linux常用配置选项