【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 ...
随机推荐
- Tomcat起不来的原因
1.没有配java_home Tomcat是Java编写的,所以必须要java_home 2.端口被占用 怎么查看端口被占用呢?——windows 小工具:Fport.exe 3.Catalina_h ...
- 原生ajax动态添加数据
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- textareaCenter 未完结 其实就是iview的textarea的从写一遍 需求是光标上下居中
重点1: 一但赋值内容,光标会失去,导致光标到第一位 解决方法 设置一个状态位isChange,编辑的时候不进行watch更新,因为emit会自动改变外层的值,触发watch 解决方法2 找回上一次的 ...
- search(3)- elastic4s-QueryDSL
elastic4s是elasticsearch一个第三方开发的scala语言终端工具库(Elastic4s is a concise, idiomatic, reactive, type safe S ...
- java之AQS和显式锁
本次内容主要介绍AQS.AQS的设计及使用.ReentrantLock.ReentrantReadWriteLock以及手写一个可重入独占锁 1.什么是AQS? AQS,队列同步器AbstractQu ...
- bash编程练习,带选项,添加或删除用户
脚本练习题: 可以接受选项及参数,而后能获取每一个选项,及选项的参数,并能根据选项及参数做出特定的操作: 比如:adminusers.sh -a|--add user .. -d|--del user ...
- Swift 4.0 数组(Array)学习
定义数组常量(常量只有读操作) let array1: [Int] = [11, 55, 5] let array2 = [11, 55, 5] 定义数组变量 var array: [Int] = [ ...
- org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter 'employeeId' not found. Available parameters are [page, map, param1, param2] 解决方法
原因很简单就是没映射到接口添加 @Param 注解 ->@Param("map") 然后在mapper.xml map.employeeId 再次测试 已经解决 ->
- [源码分析] 从实例和源码入手看 Flink 之广播 Broadcast
[源码分析] 从实例和源码入手看 Flink 之广播 Broadcast 0x00 摘要 本文将通过源码分析和实例讲解,带领大家熟悉Flink的广播变量机制. 0x01 业务需求 1. 场景需求 对黑 ...
- [图中找环] Codeforces 659E New Reform
New Reform time limit per test 1 second memory limit per test 256 megabytes input standard input out ...