redis 的操作

摘要:
Ttlusername5.仅当密钥不存在时设置密钥值setnxkeyvalue 127.0.0.1:setnxuname'DNF'(整数)0127.0.0.1:getname“rose”127.0.0.1:mgetnameagehobby1)“rose“2)”20“3)”coding“127.0.0.1:getsetstudent”green“day”127.0.0.1:

redis

Redis(Remote Dictionary Server)是一个开源使用的非关系型数据库

通常被称为数据结构服务器,因为值可以是字符串,哈希,列表,集合,有序集合

优势

​ 性能极高,读取速度110000次每秒,写的速度81000次每秒

​ 数据类型丰富,低延时、高吞吐、纯内存

​ 数据备份,恢复

​ 丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会自动删除。

数据操作的全部命令:

http://redis.cn/commands.html

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 的操作》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇CSS美化自己的完美网页安装在CloudStack时CentOS6.4中安装MySQL通过mysql_secure_installation方式修改密码下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

字典、列表之间相互嵌套

列表中嵌套字典 employee_1 = {'name': 'david', 'dept': 'ops', 'post': 'NOC', 'salary': 12000, 'id': 113} employee_2 = {'name': 'brain', 'dept': 'auto', 'post': 'DBA', 'salary': 13000, 'id...

[Data Structure & Algorithm] 八大排序算法

  排序有内部排序和外部排序之分,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。我们这里说的八大排序算法均为内部排序。   下图为排序算法体系结构图:   常见的分类算法还可以根据排序方式分为两大类:比较排序和非比较排序。本文中前七种算法都是比较排序,非比较排序有三种,分别为:  ...

redisson实现分布式锁(spring整合redisson)

由于redis实现分布式锁不完美: 加锁的代码: /** * 加锁 * @param locaName 锁的key * @param acquireTimeout 获取超时时间 * @param timeout 锁的超时时间 * @return 锁标识 */ public stat...

统计量

1. 表示集中趋势的计量 1.1均值 a. 算数平均数 = 总体标志总量 / 总体单位总量 b. 调和平均数: 又称倒数平均数,它是根据各变量的倒数来计算的平均数。是各变量值倒数的算数平均数的倒数 c. 几何平均数:是计算平均比率或平均发展速度的最常用的统计量,几何平均数可以反映现象总体的一般水平 根据同一组数据计算的结果是:算术平均数>=几何平均数...

Python面试题目之(针对dict或者set数据类型)边遍历 边修改 报错dictionary changed size during iteration

# result 是一个字典, 把里面属性值是None的属性删除 for key in result: if not result[key]: del result[key] continue 但是报错信息如下 RuntimeError: dict...

ORACLE EBS 多OU总结

1.  Form多OU实现 1)  创建一个Table,以CUX_OM_ORDER_HEADER_ALL为例 2)  创建Table的两个Synonym(一个不含_ALL,一个以_ALL结尾):CUX_OM_ORDER_HEADER和CUX_OM_ORDER_HEADER_ALL 3)  给不含_ALL的Synonym:CUX_OM_ORDER_HEADE...