redis 的操作
redis
Redis(Remote Dictionary Server)是一个开源使用的非关系型数据库
通常被称为数据结构服务器,因为值可以是字符串,哈希,列表,集合,有序集合
优势
性能极高,读取速度110000次每秒,写的速度81000次每秒
数据类型丰富,低延时、高吞吐、纯内存
数据备份,恢复
丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会自动删除。
数据操作的全部命令:
config get databases 查看所有的数据库
数据库以0开始 一共16个
默认redis有16个数据库,编号从0开始,不支持用户自定义数据库名称。
redis安装
安装
sudo apt-get update
sudo apt-get install redis-server
启动redis:
redis-server
连接:
redis-cli
输入ping命令,来测试客户端redis连接是否正常,返回pong表示正常
redis值的类型
1、字符串string
1、设置键值,存储
set key value
2、获取
get key
如果key存在,正常返回,key不存在返回nil
3、设置键值及过期时间,以秒为单位
setex username 2 'daisy'
4、查看有效时间,以秒为单位
ttl key
eg:ttl username
5、只有在key不存在时设置key的值
setnx key value
127.0.0.1:6379> set uname 'WZRY'
OK
127.0.0.1:6379> get uname
"WZRY"
127.0.0.1:6379> setnx uname 'DNF'
(integer) 0
127.0.0.1:6379> get uname
"WZRY"
127.0.0.1:6379> setnx hello 'Tom'
(integer) 1
127.0.0.1:6379> get hello
"Tom"
127.0.0.1:6379>
6、设置多个键值
mset key value [key value......]
127.0.0.1:6379> mset name 'rose' age 20 hobby 'coding'
OK
127.0.0.1:6379> get name
"rose"
127.0.0.1:6379> get age
"20"
127.0.0.1:6379> mget name age hobby
1) "rose"
2) "20"
3) "coding"
127.0.0.1:6379>
7、根据多个键获取多个值
mget key[key....]
8、设置新的值时返回上一个值(old value),记录上一个状态,以便恢复成以前的状态
getset key value
127.0.0.1:6379> set student 'daisy'OK127.0.0.1:6379> getset student 'green'"daisy"127.0.0.1:6379> get student"green"
9、返回key中字符串值的子字符
getrange key start end
eg:getrange student 1 3
运算
要求:值是字符串类型的数字
1、将key对应的值加1
incr key
2、将key对应的值减1
decr key
3、将key对应的值加整数
incrby key 数值
4、将key对应的值减去整数
decrby key 数值
1、追加值
append key value
2、获取值长度
strlen key
127.0.0.1:6379> set message 'hello'
OK
127.0.0.1:6379> append message 'python'
(integer) 11
127.0.0.1:6379> get message
"hellopython"
127.0.0.1:6379> strlen message
(integer) 11
127.0.0.1:6379>
key键的操作
1、查所有的key,支持正则表达式
keys *
keys m*
2、判断键是否存在,如果存在返回1,不存在返回0
exists uname
3、查看键对应的value类型
type key
4、修改key的名称
rename key newkey
127.0.0.1:6379> set name daisy
OK
127.0.0.1:6379> set uname green
OK
127.0.0.1:6379> rename name uname
OK
127.0.0.1:6379> get uname
"daisy"
127.0.0.1:6379> get name
(nil)
127.0.0.1:6379>
5、仅当newkey不存在时,将key改名为newkey
renamenx key newkey
修改成功时,返回1,如果存在,返回0
6、随机返回一个key
randomkey
7、删除键及对应的值
del key [key....]
8、删除所有的key
flushdb 删除当前数据库中的所有
flushall 删除所有数据库中的key
2、哈希 hash
1、设置单个值
hset key field value
eg: hset user name daisy
2、设置多个值
hmset key field value [field value]
3、为哈希表key中的指定字段的整数值加上增量incremet
hincrby key field increment
4、为哈希表key中的指定字段的浮点值加上增量incremet
hincrbyfloat key field increment
5、只有在字段field不存在时,设置哈希表字段的值
hsetnx key field value
6、获取一个字段的值
hget key field
7、获取多个字段的值
hmget key field[field....]
8、获取所有字段和值
hgetall key
9、获取所有字段
hkeys key
10、获取所有值
hvals key
11、返回包含数据的个数
hlen key
12、删除字段及值
hdel key field[field....]
13、判断属性是否存在,存在返回1,不存在返回0
hexists key field
3、列表list
1、在头部插入
lpush key value [value]
2、在尾部插入
rpush key value [value]
3、将一个值插入到已存在的列表头部,列表不存在时操作无效
lpushx key value
rpushx key value
list获取
1、移除并返回key对应list的第一个元素
lpop key
2、移除并返回key对应list的最后一个元素
rpop key
3、通过索引取
lindex key 索引值
不管从左插入还是右插入,返回的索引值都是从左到右的
4、获取列表的长度
llen students
5、裁剪列表,改为原集合的一个子集
ltrim key start end
6、返回存储在key的列表中的指定范围的元素
lrange key start end
4、集合set
无序集合,元素类型为string类型,元素具有唯一性,不重复
1、添加元素
sadd key member [member......]
2、获取key中的所有元素
smembers key
3、移除并返回集合中第一个随机元素
spop key
4、返回集合中一个或多个随机元素
srandmember key #返回一个随机元素
srandmember key count #返回count个随机元素
5、移除集合中一个或多个成员
srem key member1[member2]
127.0.0.1:6379> sadd python coding data web learn
(integer) 4
127.0.0.1:6379> sadd java coding data web vr
(integer) 4
127.0.0.1:6379> sinter python java
1) "data"
2) "web"
3) "coding"
127.0.0.1:6379> sdiff python java
1) "learn"
127.0.0.1:6379> sdiff java python
1) "vr"
127.0.0.1:6379> sunion java python
1) "vr"
2) "coding"
3) "data"
4) "learn"
5) "web"
127.0.0.1:6379> sismember python learn
(integer) 1
127.0.0.1:6379> sismember python vr
(integer) 0
127.0.0.1:6379>
1、求多个集合的交集
sinter key [key]
2、求多个集合的差集
sdiff key [key...]
求差集,注意比较顺序
3、求多个集合的并集
sunion key [key...]
4、判断元素是否在集合中,存在返回1,不存在返回0
sismember key member
5、有序集合 zset
1、添加
zadd key score member [score member....]
2、获取,返回指定范围的元素,后面是索引值
zrange 可以 start end
3、返回元素个数
zcard key
4、返回有序集合key中,score在min和max之间的元素的个数
zcount key min max
5、返回member的score值
zscore key member
redis 的操作的更多相关文章
- spring data redis RedisTemplate操作redis相关用法
http://blog.mkfree.com/posts/515835d1975a30cc561dc35d spring-data-redis API:http://docs.spring.io/sp ...
- Spring Framework 中启动 Redis 事务操作
背景: 项目中遇到有一系列对Redis的操作,并需要保持事务处理. 环境: Spring version 4.1.8.RELEASE Redis Server 2.6.12 (64位) spring- ...
- php的redis 操作类,适用于单台或多台、多组redis服务器操作
redis 操作类,包括单台或多台.多组redis服务器操作,适用于业务复杂.高性能要求的 php web 应用. redis.php: <?php /* redis 操作类,适用于单台或多台. ...
- 【springboot】【redis】springboot结合redis,操作List集合实现时间轴功能
springboot结合redis,操作List集合实现时间轴功能
- php redis队列操作
php redis队列操作 rpush/rpushx 有序列表操作,从队列后插入元素:lpush/lpushx 和 rpush/rpushx 的区别是插入到队列的头部,同上,'x'含义是只对已存在的 ...
- redis下操作hash对象
redis下操作hash对象 hash用于存储对象,对象的格式为键值对 命令 设置 设置单个属性 HSET key field value 设置多个属性 HMSET key field value [ ...
- Redis字符串操作
字符串命令 (基本用法) GET : 获取给定键的值 SET : 设置给定键的值 DEL : 删除给定键的值(这个命令可以用于任何类型) (自增命令和自减命令) INCR : INCR key-n ...
- 简单的redis缓存操作(get、put)
简单的redis缓存操作(get.put) 本文介绍简单的redis缓存操作,包括引入jedisjar包.配置redis.RedisDao需要的一些工具.向redis中放数据(put).从redis中 ...
- 封装php redis缓存操作类
封装php redis缓存操作类,集成了连接redis并判断连接是否成功,redis数据库选择,检测redis键是否存在,获取值,写入值,设置生存时间和删除清空操作. php redis类代码: &l ...
- Spring boot配置多个Redis数据源操作实例
原文:https://www.jianshu.com/p/c79b65b253fa Spring boot配置多个Redis数据源操作实例 在SpringBoot是项目中整合了两个Redis的操作实例 ...
随机推荐
- iOS 开发中的一些注意点(安全、当前语言、时间格式化)
1.重复运行项目,不重复构建项目(来自Heath Borders) 假如你一直在不停地调试同一个问题,你可以在不重复构建的情况下运行你的APP,这样:“Product>Perform Actio ...
- php递归循环地区
$mylist = array( array( 'area_parent_id'=>0,'id'=>1,'area_name' => '河北',), array( 'area_par ...
- 数据结构之 图论---最小生成树(prim + kruskal)
图结构练习——最小生成树 Time Limit: 1000MS Memory limit: 65536K 题目描述 有n个城市,其中有些城市之间可以修建公路,修建不同的公路费用是不同的.现在我们想知 ...
- ansible-playbook初始化服务器
hosts ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ [test] 0.0.0.0 ansible_ssh_us ...
- 精选Java面试题
什么是隐式类型转换?什么是显示类型转换? 当将占位数少的类型赋值给占位数多的类型时,Java自动使用隐式类型转换(如int型转为long型).当把在级别高的变量的值赋给级别底变量时,必须使用显示类型转 ...
- (QA-LSTM)自然语言处理:智能问答 IBM 保险QA QA-LSTM 实现笔记.md
train集: 包含若干条与保险相关的问题,每一组问题对为一行,示意如下: 可分为四项,第三项为问题,第四项为答案: 1.build_vocab 统计训练集中出现的词,返回结果如下(一个包含3085个 ...
- LiveCD、LiveDVD和BinDVD区别在哪里
本文转载自: http://www.kankanews.com/ICkengine/archives/86968.shtml 1.CentOS系统镜像有两个,安装系统只用到第一个镜像即CentOS-6 ...
- linear_classifier.py
import numpy as np from cs231n.classifiers.linear_svm import * from cs231n.classifiers.softmax impor ...
- 了解Hadoop
Apache Hadoop 官网 Hadoop源码分析 参考1 参考2 Hadoop 是一个由 Apache 基金会所开发的分布式系统基础架构. Hadoop 的框架最核心的设计就是:HDFS(H ...
- JAVA通过信号量避免死锁
死锁是这样一种情形:多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放.由于线程被无限期地阻塞,因此程序不可能正常终止. 导致死锁的根源在于不适当地运用"synchronized ...