Redis(一) String类型操作【存字符串、存数字】

Stella981
• 阅读 814

什么是redis?

  redis是一个key-value存储系统。它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

  redis实际上是在内存中建立一块缓存区,可以进行不同数据之间的数据传递。【不同进程之间的内存是不能共享的】QQ与微信要想进行数据的传输,需要在内存中构建一个中间商,用于二者之间的连接。相当于在中间商在二者之间建立了socket。

redis的安装

https://github.com/MicrosoftArchive/redis/releases

Redis(一) String类型操作【存字符串、存数字】

  安装后,在安装路径下使用redis-cli.exe可以进行命令行式的操作。【命令行的操作指令与在python中使用的格式略有不同】

Redis(一) String类型操作【存字符串、存数字】

  在使用命令行式的操作时,当对于一个指令的编写格式不熟悉时,可以使用help指令进行查询:

Redis(一) String类型操作【存字符串、存数字】

String类型操作

Redis(一) String类型操作【存字符串、存数字】

  该类型的操作只是针对字符串,数字类型的存储,即只是键值对形式的单值存储。从返回的结果中可以看出,这样直接set再get的结果返回的是byte类型。对于整型可以直接使用int将其强转。

  其中,第三行是连接池操作,使用connection pool来管理对一个redis server的所有连接,避免每次建立、释放连接的开销。默认,每个Redis实例都会维护一个自己的连接池。可以直接建立一个连接池,然后作为参数Redis,这样就可以实现多个Redis实例共享一个连接池。

  redis中提供了Redis和****StrictRedis两个类,推荐使用StrictRedis类(第5行)。生成的实例可以添加到连接池当中。

然后,通过set指令,将数据传输到内存的缓存中。

可以在使用get指令,获取数据。

1 # r.set()  目前只能设置数字和字符串类型
2 import redis
3 pool_redis = redis.ConnectionPool(host="localhost", port=6379)
4 r = redis.Redis(connection_pool=pool_redis)   # 将当前的redis实例与连接池pool_redis链接
5 # r = redis.StrictRedis(host='localhost', port=6379, password=123456)
6 r.set('data', 10)   # 这里面不能传列表、字典 等等只能传入数字和字符串
7 print(r.get('data'))
8 a = r.get('data')
9 print(int(a))

  输出:

1 b'10'
2 10

包含的方法:

set系列

1 set(name, value, ex=None, px=None, nx=False, xx=False)

 在Redis中设置值,默认:不存在则创建,存在则修改

参数:

#ex,过期时间(秒)
#px,过期时间(毫秒)
#nx,如果设置为True,则只有name不存在时,当前set操作才执行
#xx,如果设置为True,则只有name存在时,当前set操作才执行

  还有一些对set中包含的ex/px/nx/xx进行展开的方法

1 setnx(name, value) # set中nx字段的展开方法

  设置值,只有name不存在时,执行设置操作(添加)

1 setex(name, value, time) # set中ex字段的展开方法

# 设置值
# 参数:
# time,过期时间(数字秒 或 timedelta对象)

1 psetex(name, time_ms, value) # set中px字段的展开方法

# 设置值
# 参数:
# time_ms,过期时间(数字毫秒 或 timedelta对象)

1 mset(*args, **kwargs) # 批量设置值

  批量设置值

#如:
mset(k1='v1', k2='v2')
#或
mset({'k1': 'v1', 'k2': 'v2'})

1 setrange(name, offset, value) # 从某个位置开始替换

   修改字符串内容,从指定字符串索引开始向后替换(新值太长时,则向后添加)

# 参数:
# offset,字符串的索引,字节(一个汉字三个字节)
# value,要设置的值

get系列

1 get(name)

  获取值

1 mget(keys, *args)

  批量获取

#如:
mget('data', 'data_info')
#或
r.mget(['data', 'data_info'])

1 getset(name, value) # ***

  在设置新值时获取原来的值

1 getrange(key, start, end) # 获取时进行切片的操作

  获取子序列(根据字节获取,非字符)

# 参数:
# name,Redis 的 name
# start,起始位置(字节)
# end,结束位置(字节)
点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
把帆帆喂饱 把帆帆喂饱
1年前
Redis入门
Redis1、Redis概述Redis介绍Redis是一个开源的keyvalue存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sortedset–有序集合)和
Stella981 Stella981
2年前
Redis!
概述Redis是一个KeyValue存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原
Stella981 Stella981
2年前
Redis安装与配置问题
Redis是一个keyvalue存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sortedset有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基
Stella981 Stella981
2年前
Redis实例讲解
简介  Redis是一个keyvalue的nosql产品,和我们熟知的Memcached有些类似,但他存储value类型相对更加丰富,包括string(字符串),list(链表),set(集合),zset(sortedset有序集合)和hash。与memcached一样,为了保证高效率,数据都是缓存在内存中。区别的是redis类型众多,也被
Stella981 Stella981
2年前
Redis常用命令
Redis常用命令Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sortedset:有序集合)等https://gitee.com/nmwork/RedisUtil(https://gitee.com/nmwork/RedisUtil)1.  Redis数
Easter79 Easter79
2年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Stella981 Stella981
2年前
Redis的安装配置和使用
  现在我来讲解一下Redis的安装和配置,那么什么是Redis呢?他的作用是什么呢?  redis是一个keyvalue存储系统,和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sortedset有序集合)和hash(哈希类型)。这些数据类型都支持push/
Stella981 Stella981
2年前
Linux下Redis的安装和部署
一、Redis介绍Redis是当前比较热门的NOSQL系统之一,它是一个keyvalue存储系统。和Memcache类似,但很大程度补偿了Memcache的不足,它支持存储的value类型相对更多,包括string、list、set、zset和hash。这些数据类型都支持push/pop、add/remove及取交集并集和差集及
3A网络 3A网络
1年前
Redis 存储对象信息是用 Hash 还是 String
Redis存储对象信息是用Hash还是StringRedis内部使用一个RedisObject对象来表示所有的key和value,RedisObject中的type,则是代表一个value对象具体是何种数据类型,它包含字符串(String)、链表(List)、哈希结构(Hash)、集合(Set)、有序集合(Sortedset)。