【redis】redis
一、redis简介:
1. reids 也是一个 key-value 存储系统,更加确切地说,它已经是一个非关系型数据库。
2. 关系型。
SQL语言。
3. 非关系型。
key - value。
4. 数据类型。
字符串。
哈希
列表
集合
有序集合。
二、安装
linux
1. 解压
tar xzf redis-3.2.9.tar.gz
2. 进入目录
cd redis-3.2.9
3. 编译
make
4. 启动
二进制文件是编译完成后在src目录下,通过下面的命令启动Redis服务:
src/redis-server 或者 cd src && ./redis-server [redis.conf]
5. 使用
你可以使用内置的客户端命令redis-cli进行使用:
src/redis-cli
6. 配置
redis.conf
三、安装 php 扩展
1. 下载
s
2. 解压
unzip phpredis.zip
3. 进入目录
cd /phpredis
4. 执行 phpize
/usr/local/bin/phpize
5. 配置
./configure --with-php-config=/usr/local/php/bin/php-config
6. 编译安装
make && make install
7. 修改 php.ini 配置文件
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-zts-20151012/"
extension="redis.so";
8. 重启apache
/usr/local/apache2/bin/apachectl restart
四、使用 php 操作
数据类型
1. string
增加
set('索引','值') // 设置值。
setex // 设置有生命周期的值
mset('数组') // 批量设置值
setnx('索引','值') // 设置新值
删除
delete// 删除值。
修改
set('索引','值') // 修改值
incr('索引') // 增加值
incrby('索引','步进值') // 步进递加值
decr('索引') // 递减值
decrby('索引','步进值') // 步进递减值
获取
get('索引')// 获取值
mget('数组')// 批量获取值
2. list,链表,列表。
增加
lpush(‘表名’,‘值’)// 从左添加值
rpush(‘表名’,‘值’)// 从右添加值
删除
lpop(‘表名’)// 从左弹出
rpop(‘表名’)// 从右弹出
lrem(‘表名’)// 删除几个
修改
lset(‘表名’,第几个,‘要修改的值’)// 根据索引修改,从0开始
lset(‘表名’,负第几个,‘要修改的值’)// 根据索引修改,倒数,从-1开始
rpoplpush(‘弹出表’,‘填入表’)// 弹出最后一个元素到另一个新的列表中
查询
lindex(‘表名’,索引号数字)// 根据索引查询
lrange(‘表名’,开始索引号,结束索引号)// 从 start 到 end 结束。
lrange(‘表名’,0,-1)// 获取所有元素
lsize(‘表名’)// 查询列表中元素的个数
3. set 无序集合
增加
sadd(‘集合名’,‘值1’,‘值2’,‘值n’)// 添加集合
删除
srem(‘集合名’,‘值’)// 删除集合中的元素
修改
smove(‘集合1’,‘集合2’,‘值’)// 移动集合中的元素到另一个集合中。
查询
smembers(‘集合名’)// 获取集合中所有的元素
ssize(‘集合名’)// 获取集合中元素的个数
srandmember(‘集合名’)// 从集合中随机获取元素。
sinter(‘集合1’,‘集合2’)// 交集
sunion(‘集合1’,‘集合2’)// 并集
sdiff(‘集合1’,‘集合2’)// 差集
sismember(‘集合名’,‘值’)// 检测集合中元素是否存在
4. zset 有序集合
增加
zadd(‘集合名’,分数,‘值’)// 添加集合
删除
zrem(‘集合名’,‘值’)// 删除集合中的一个元素
修改
zincrby(‘集合名’,步进值,‘值’)// 提高分数
查询
zrange(‘集合名’,0,-1)// 获取集合中的所有元素
zrevrange(‘集合名’,0,-1)// 获取集合中的所有元素,倒数。
zrangebyscore(‘集合名’,起始分数,终止分数)// 根据分数范围获取元素,并取几个。
zrevrangebyscore('z1', 10, 50, ['withscores'=> true, 'limit'=> [0, 3]]// 根据分数范围获取元素,并取几个。
zcount(‘集合名’,起始分数,终止分数)//统计分数范围内的元素个数
zsize(‘集合名’)// 获取集合中元素的个数
zscore(‘集合名’,‘值’)// 获取某个元素的分数
zrank(‘集合名’,‘值’)// 获取某个元素的排名,从0开始算起。
zrevrank(‘集合名’,‘值’)// 获取某个元素排名,倒数
5. hash 哈希
增加
hset(‘哈希名’,‘索引’,‘值’)// 设置值
hmset(‘哈希名’,数组)// 批量设置值
hincrby(‘哈希名’,‘索引’,步进值)// 递加值
删除
hdel(‘哈希名’,‘值’)// 删除值
修改
hset(‘哈希名’,‘索引’,‘值’)// 修改值
查询
hget(‘哈希名’,‘索引’)// 获取值
hmget(‘哈希名’,数组)// 批量获取值
hgetall(‘哈希名’)// 获取所有值
hlen(‘哈希名’)// 获取个数
hkeys(‘哈希名’)// 获取所有键。
hvals(‘哈希名’)// 获取所有值
hexists(‘哈希名’,‘索引’)// 检测键名是否存在
6. 通用操作
select(数据库编号)// 选择数据库
flushdb// 清空当前数据库
flushAll// 清空所有数据库
set// 设置值
expire(‘索引’,时间)// 添加生命周期。
del// 删除值
ttl(‘索引’)// 获取生命周期
exists(‘索引’)// 检测键名是否存在
keys(‘*’)// 获取所有键
keys(‘name*’)
keys(‘*name’)
【redis】redis的更多相关文章
- 【NoSql】Redis
[NoSql]Redis 一. 文档 1. 官网 2. Windows 安装包 3. C# Driver a. ServiceStack.Redis 最新版本是收费的 b. StackExchange ...
- 【python】redis基本命令和基本用法详解
[python]redis基本命令和基本用法详解 来自http://www.cnblogs.com/wangtp/p/5636872.html 1.redis连接 redis-py提供两个类Redis ...
- 【redis】redis的bind配置
原文:[redis]redis的bind配置 在配置文件redis.conf中,默认的bind 接口是127.0.0.1,也就是本地回环地址.这样的话,访问redis服务只能通过本机的客户端连接, ...
- 【redis】redis基础命令学习集合
写在前面 Redis是一个高速的内存数据库,它的应用十分广泛,可以说是服务端必学必精的东西.然而,学以致用,无用则无为.学了的东西必须反复的去用,去实践,方能有真知.这篇文章记录了我在redis学习过 ...
- 【redis】redis应用场景,缓存的各种问题
如果你还不知道redis的基本命令与基本使用方法,请看 [redis]redis基础命令学习集合 缓存 redis还有另外一个重要的应用领域——缓存 引用来自网友的图解释缓存在架构中的位置 默认情况下 ...
- 【Redis】Redis Sentinel 哨兵模式搭建
Redis Sentinel介绍 Redis Sentinel是Redis的官方高可用性解决方案 Redis Sentinel为Redis提供高可用性.实际上,这意味着使用Sentinel可以创建一个 ...
- 【Redis】redis各类型数据存储分析
一.简介和应用 Redis是一个由ANSI C语言编写,性能优秀.支持网络.可持久化的K-K内存数据库,并提供多种语言的API.它常用的类型主要是 String.List.Hash.Set.ZSet ...
- 亿级流量场景下,大型缓存架构设计实现【1】---redis篇
*****************开篇介绍**************** -------------------------------------------------------------- ...
- 【Redis】Redis cluster集群搭建
Redis集群基本介绍 Redis 集群是一个可以在多个 Redis 节点之间进行数据共享的设施installation. Redis 集群不支持那些需要同时处理多个键的 Redis 命令, 因为执行 ...
- 【转】Redis学习---哈希结构内存模型剖析
[原文]https://www.toutiao.com/i6594624365906625032/ 概述 在前文<Redis字符串类型内部编码剖析>之中已经剖析过 Redis最基本的 St ...
随机推荐
- 深入理解React key
一 react 组件元素的 diff 算法 二 key 的理解 概述 react 中的key 属性,它是一个特殊的属性,它的出现不是给开发者用的(例如你为一个组件设置key之后不能获取组件的这个key ...
- Java注解 看这一篇就够了
注解 1.概念 注解:说明程序的.给计算机看的 注释:用文字描述程序的.给程序员看的 注解的定义:注解(Annotation),也叫元数据.一种代码级别的说明.它是JDK1.5及以后版本引入的一个特性 ...
- java 泛型简介(转载)
原文出处: absfree 1. Why ——引入泛型机制的原因 假如我们想要实现一个String数组,并且要求它可以动态改变大小,这时我们都会想到用ArrayList来聚合String对象.然而,过 ...
- 五分钟了解Consul
Hi,大家好,我叫consul,翻译成中文叫做“领事”,其实我更喜欢叫自己为中介,因为我觉得自己做的事情和房产中介非常像.比如说想要卖房的房东到我这边登记,我将房屋信息登录到我的表格中(服务注册),有 ...
- Ruby中的Hash(哈希),你可以理解为字典
原文链接 以下代码在Ruby 2.5.1中编译通过 定义 myHash = Hash.new myHash1 = Hash["key1" => 100, "key2 ...
- System.Text.Json 序列化对所有 JSON 属性名称使用 camel 大小写
asp.net core3.x 新增的序列号接口System.Text.Json 序列化时,如果要对所有 JSON 属性名称使用 camel 大小写 将 JsonSerializerOptions.P ...
- VScode配置CMD本地运行环境(2.0)
VScode配置CMD本地运行环境(2.0) 官方Task.json说明 完整的Task.json配置信息 Task.json预定义变量 看了很多网上的教程都说需要下载VScode的python插件, ...
- Django 支付宝付款接口的使用
我们在开发的过程中经常会碰到调用微信或者支付宝接口进行付款,付款完成之后,如果用户绑定了我的账号,我只要有活动了,就要给这个关注我的用户推动消息,让用户知道,比如说,我们经常会关注一些公众号,然后这些 ...
- POJ3352 Road Construction Tarjan+边双连通
题目链接:http://poj.org/problem?id=3352 题目要求求出无向图中最少需要多少边能够使得该图边双连通. 在图G中,如果任意两个点之间有两条边不重复的路径,称为“边双连通”,去 ...
- leetcode之820. 单词的压缩编码 | python极简实现字典树
题目 给定一个单词列表,我们将这个列表编码成一个索引字符串 S 与一个索引列表 A. 例如,如果这个列表是 ["time", "me", "bell& ...