redis基础之基本键值操作和使用(三)
前言
redis安装完毕后开始使用redis,先熟悉命令行操作。
redis数据的类型
键:redis的所有的键都是string类型;
值:五种类型
string:字符串类型;一个string最大可以储存512MB的数据,其可以储存任何对象;
hash:散列,用来存储对象,key代表对象,field代表属性
set:集合类型,无序的集合,元素为string类型,不可重复;
list:列表类型,一个链表,其元素类型属于string,按照插入的顺序排序
zset:有序集合类型,元素为string,不可重复,每个元素可以指定一个权重,按权重从小到大排列
常用命令
服务相关命令
ping : 返回pong,用来测试连接是否成功;
echo xxx: 在命令行打印一些内容;
quit/exit:退出客户端;
info:返回redis相关的信息;
键命令
select index # 切换数据库,0~15代表16个数据库
keys * # 查看当前所有的keys,这个在生产环境下不要使用
keys pattern # 查找键,支持正则,常用的有 *(匹配0个或多个) ?(匹配一个) [a-z] [abcd]
exists key # 查看这个key是否存在
type key # 查看key的类型
ttl key # 查看有效时间,指的是还剩余的有效时间,如果过期,有效时间置为-2;如果设置为永久有效,有效时间为-1.
dbsize # 查看数据库中所有的键值对的数目
randomkey # 随机返回数据库里的一个key
rename key1 key2 # 重命名key
flushdb # 清空当前选择的数据库
flushall # 清库该redis实例所有的数据库
expire key seconds # 为键值对设置过期时间
client list # 查看当前所有的客户端
# 同步磁盘
save # 会立即阻塞所有的客户端请求,开始同步rdb文件
gbsave # 异步保存rdb文件
操作string类型
增
# 设置键值对,永久保存
set key value
# 设置有过期时间的键值对,过期自动删除
setex key 时间 value
# 设置多个键值对
mset key value key value ...
# 设置多个不存在的键值对,存在则失败
msetnx key value key value
# 为不存在的键设置值
setnx key value # 如果键存在,设置失败
# 字符串中字符替换
setrange key offset value
查
# 获取值
get key
# 获取子字符串
getrange key start end
strlen key # 获取值得长度
改
# 对于value是数值的情况,可以运算;如果不是数字会报错;
incr key # 对value加1
incrby key num # 对value加一个整数,可以是负数,但不可以是小数
incrbyfloat key num # 对value减一个浮点数,可以是负数
decr key # 对value减少1
decrby key num # 对value减一个整数,可以是负数,但不可以是小数
append key value # 对原来的key的值进行字符串拼接
删
# 删除一个或多个键值对
del key key
操作hash类型
增
# 设置单个hash对象
hset key field value
# 设置多个属性
hmset key field value field value...
# 为不存在的散列设置值,如果其field或key已经存在,则没有操作
hsetnx key field value
删
# 删除属性和值
hdel key field field
查
# 判断属性是否存在
hexists key field
# 获取一个属性
hget key field
# 获取多个属性
hmget key field field...
# 获取所有属性和值
hgetall key
# 获取所有的属性
hkeys key
# 获取所有的值
hvals key
# 获取对象属性的个数
hlen key
# 返回值得字符串的长度
hstrlen key field
改
# 对属性增加一个整数num,如果field不存在,则增加一个field;如果value不是数字整数,替换成数字整数
hincrby key field num
# 对属性增加一个浮点数num,如果不存在,增加一个field;如果value不是数字整数,报错;
hincrbyfloat key field num
操作list类型
增
# 创建一个list并在头部插入数据
lpush key value value..
# 在尾部插入数据
rpush key value value
# 在一个元素的后面或前面插入新的元素,如果有多个相同的元素,会按从头到尾找到的第一个元素
linsert key before|after 已有的元素 新的元素
# 设置指定的索引值的元素值,可以是负数,-1表示最后一个
lset key index value # lset list1 3 kkk
查
# 从头部弹出元素
lpop key
# 从尾部弹出元素
rpop key
# 返回指定范围内的元素,基于下标0,可以是负数
lrange key start stop # lrange list1 -3 -1
# 如果指定的下标超出了范围,会返回实际的数据
# 返回list的长度
llen key
# 返回对应索引的元素
lindex key index
# 从非空列表中弹出最左元素,在timeout时间内阻塞等待
blpop key key ... timeout
# 从非空列表中弹出最右元素,在timeout时间内阻塞等待
brpop key key ... timeout
# 从key1中最右端弹出元素加入到key2的最左端,返回该元素
rpoplpush key1 key2
# 从key1中最右端弹出元素加入到key2的最左端,并在timeout时间内阻塞等待
brpoplpush key1 key2 timeout
删除
# 删除元素
lrem key count value
# 删除count个value值,如果count>0,从左边开始删;
# 小于0从右边开始删;
# 等于0删除所有的value;
# count的绝对值大于列表中value的个数时,删除所有的value
修改
# 剪切原来的列表
ltrim key start stop
操作集合set
增
# 创建并添加一个或多个元素到集合
sadd key value ...
查
# 返回集合里的所有元素
smembers key
# 返回集合元素的个数
scard key
# 多集合的交际
sinter key1 key2
# 将集合的交集存储在dest中
sinterstore dest key1 key2...
# 多集合的并集
sunion key1 key2
# 将集合的并集存储在dest中
sunionstore dest key1 key2...
# 多集合的差集,以第一个key作为基准
sdiff key ...
# 将存在第一个集合key1,但不在其他集合中的元素存储在dest中
sdiffstore dest key1 key2 ...
# 判断元素是否在集合中,如果存在返回1,不存在返回0
sismember key value
# 从集合里随机返回一个或多个元素,当count是正数,返回count个不重复的元素,如果不够,返回实际的所有元素;当count为负数,返回count个可重复的元素;为0返回none
srandmember key count
删
# 删除元素一个或多个元素
srem key value
# 随机移除集合里的一个或多个元素,返回该元素
spop key count # count可以不写,默认移除一个;不能为负数,否则报错;大于元素个数,移除所有元素
改
# 将一个集合里的元素移除并添加到另一个元素里,成功返回1,失败0
smove key1 key2 member
有序集合zset
增
# 创建并加入元素,会按照score的值进行排序,如果元素的分数值相同,将会使用字典排序,按照a到z
zadd key score value score value ...
查
# 获取集合中的所有的值,超过范围取实际的值
zrange key start stop
# 返回在分数范围内的元素
zrangebyscore key min max
# 返回元素的个数
zcard key
# 返回score在范围内的元素
zcount key min max
# 返回成员的score的值
zscore key value
# 返回成员在有序集合中的排名,从0开始算起
zrank key member
改
# 修改元素的值的分数
zincrby key 整数 value
删
# 删除指定元素
zrem key member member
# 删除分数范围的元素
zremrangebyscore key min max
总结
- redis使用最多的类型是string和list,string作为键值对存储缓存数据,list作为队列使用。
参考
redis基础之基本键值操作和使用(三)的更多相关文章
- redis键值操作
1.1. redis键值操作 1.1.1. keys patten 查询相应的key 可以精确的查,也可以模糊的查 1.1.1.1. 通配符:* ? [] 在redis里,模糊查询key的时候有3个通 ...
- php数组键值操作和数组统计函数-函数
1.数组函数//作用:提供了很多官方写的很多有用的代码段,提高编写速度 1)数组的键值操作函数 array_values();//获取数组中的值 array_keys();//获取数组中的键 in_a ...
- php课程 4-17 数组键值操作函数有哪些
php课程 4-17 数组键值操作函数有哪些 一.总结 一句话总结:多看学习视频 1.php中数组的键值操作函数有哪6个? • array_values();获取数组中的值• array_keys( ...
- 实现键值对存储(三):Kyoto Cabinet 和LevelDB的架构比較分析
译自 Emmanuel Goossaert (CodeCapsule.com) 在本文中,我将会逐组件地把Kyoto Cabinet 和 LevelDB的架构过一遍.目标和本系列第二部分讲的差点儿相 ...
- 【redis常用的键值操作及性能优化】
服务端 启动redis服务 { // -a:指定密码 -h:指定主机 -p:指定端口 } //让redis 服务中断崩溃 //保存和关闭 //后台备份 //设置登录密码 //redis-benchma ...
- Redis 笔记与总结5 Redis 常用命令之 键值命令 和 服务器命令 && 高级应用之 安全性 和 主从复制
Redis 提供了丰富的命令对数据库和各种数据库类型进行操作,这些命令可以在 Linux 终端使用. 1. 键值相关命令: 2. 服务器相关命令 键值相关命令 ① keys 命令 返回满足给定 pat ...
- Redis 内存大小限制+键值淘汰策略配置
限制最大内存 windows 的 maxmemory-policy 策略可能会少一些 # 指定 Redis 最大内存限制,Redis 在启动时会把数据加载到内存中,达到最大内存后,Redis 会先尝试 ...
- [redis] redis 存取键值对常用的三种使用方式 - Jedis、JedisPool、Jedis分布式
|-Jedis 普通方式 |-JedisPool 连接池方式(需要引入pool相关jar) |-Jedis 分布式 (需要引入pool相关jar) 引入jedis2.7.0和commons.pool2 ...
- redis基础之python连接redis(五)
前言 前面介绍了在数据库命令行直接操作redis,现在学习使用python的redis包来操作redis,本人安装的是redis==2.10.6: 系列文章 redis安装和配置 redis命令行操作 ...
随机推荐
- 如何修改容器内的/etc/resolv.conf
源由不表,暂且略过. 直接说workaround. 因为openshift的模式,/etc/resolv.conf是在pod生成的时候插入的,写入的是宿主机的ip作为dns的寻址,如果需要修改的化,需 ...
- 用C语言实现面向对象的开发
C语言的对象化模型 面向对象的特征主要包括: .封装,隐藏内部实现 .继承,复用现有代码 .多态,改写对象行为 采用C语言实现的关键是如何运用C语言本身的特性来实现上述面向对象的特征. 1.1 封装 ...
- Spark1.0.0 应用程序部署工具spark-submit
原文链接:http://blog.csdn.net/book_mmicky/article/details/25714545 随着Spark的应用越来越广泛,对支持多资源管理器应用程序部署工具的需求也 ...
- Unity的shader学习2
下面继续看基于surface的shader代码,基本与Vertex&Fragment shader差不多,只是不能写pass,然后只需要声明surface函数,就能处理所有的事情. Shade ...
- iOS:使用贝塞尔曲线绘制图表(折线图、柱状图、饼状图)
1.介绍: UIBezierPath :画贝塞尔曲线的path类 UIBezierPath定义 : 贝赛尔曲线的每一个顶点都有两个控制点,用于控制在该顶点两侧的曲线的弧度. 曲线的定义有四个点:起始点 ...
- iOS:删除storyBoard,纯代码实现UITabBarController的视图切换功能
storyboard是一个很强大的编写代码的辅助工具,可以帮助布局多个视图之间的联系,既直观又能减少代码量:但是,作为一个程序员,在不使用storyboard的情况下,纯代码编写是必须的技能. 下面就 ...
- XML 简单介绍
先附上一张XML 大概图:详解见博客内容. 一.定义 XML(EXtensible Markup Language) :可扩展标记语言. 设计的用途:用来描述,存储,传输数据信息. 二.特色 1.单纯 ...
- unity 统一替换shader
camera.SetReplacementShader(shader,"tag"); 可以切了测试性能
- TensorFlowIO操作(二)----读取数据
读取数据 小数量数据读取 这仅用于可以完全加载到存储器中的小的数据集有两种方法: 存储在常数中. 存储在变量中,初始化后,永远不要改变它的值. 使用常数更简单一些,但是会使用更多的内存,因为常数会内联 ...
- 服务 进程守护 MarsDaemon 简介
MarsDaemon 基本功能 https://github.com/Marswin/MarsDaemon It is a lite library, you can make your projec ...