Redis 命令之 String

redis 是开源免费, 基于内存操作的kv非关系数据

redis 为什么是单线程还这么快?
redis 是将所有的数据都放在内存中,所以说单线程操作就是最高的。多线程(cpu上下文切换:是个一个非常耗时的操作) 对于内存系统来说,如果没有上下文切换,效率就是最高的 多次读写都是在一个cpu上面的

库, redis的优点就是基于内存操作,数据类型多(,有五个常用的数据类型, 有三个不常用的数据.) 查询速度快. redis是单线程的。 redis默认的数据库有16个 

redis-cli # 启动redis 数据库
192.168.120.128:6379> ping  # 验证redis 设置是否正确
PONG  # 返回 PONG 
# 添加一个kv的数据 set 就是添加  set key value
192.168.120.128:6379> set name xiaomo
OK
# get 获取添加的key  set key
192.168.120.128:6379> get name
"xiaomo"
# 查看所有的key 
192.168.120.128:6379> keys *
1) "name"
# 清楚当前库中所有的key
192.168.120.128:6379> flushdb 
OK
192.168.120.128:6379> keys * 
(empty array)
192.168.120.128:6379> 
# 清楚所有库中的key 
192.168.120.128:6379> flushall 
OK
192.168.120.128:6379> keys * 
(empty array)
# 切换数据库
192.168.120.128:6379> select 1
OK
192.168.120.128:6379[1]> 
192.168.120.128:6379> set name xiaomo
OK
192.168.120.128:6379> get name
"xiaomo"
# 判断这个key 是否存在
192.168.120.128:6379> exists name
(integer) 1

# 将你的key 移动到 db1 数据库中 语法格式 move key db 
192.168.120.128:6379> move name 1
(integer) 1
# 切换数据库
192.168.120.128:6379> select 1
OK
# 查询所有的key 36
192.168.120.128:6379[1]> keys *
1) "name"

# 设置一个key的过期时间   单位是秒
192.168.120.128:6379> EXPIRE name 10
(integer) 1

# ttl 查看当前key的剩余时间
192.168.120.128:6379> ttl name
(integer) 8

# 查看key 数据类型 type
192.168.120.128:6379> type name
string
192.168.120.128:6379> type age
string

redis 数据类型
String(字符串)
# APPEND 尾部添加  (如果当前key 不存在就相当于set key values)
192.168.120.128:6379> set name tom1
OK
192.168.120.128:6379> APPEND name 'good student'
(integer) 16
192.168.120.128:6379> get name
"tom1good student"
# strlen  获取字符串长度
192.168.120.128:6379> STRLEN name
(integer) 16


192.168.120.128:6379> set views 0
OK
192.168.120.128:6379> get views
"0"
# + 1   相当于 i++

'''
#  incr  +1 
#  decr  -1
#  incrby key + 设置默认步长
#  decrby key - 设置默认步长
'''
192.168.120.128:6379> incr views
(integer) 1
192.168.120.128:6379> incr views
(integer) 2
192.168.120.128:6379> decr views
(integer) 1
192.168.120.128:6379> get views
"1"
192.168.120.128:6379> INCRBY views 10
(integer) 10
192.168.120.128:6379> DECRBY views 5
(integer) 5
192.168.120.128:6379> get views
"5"



192.168.120.128:6379> set key1 tom1
OK

#  GETRANGE 截取字符串内容
192.168.120.128:6379> GETRANGE key1 0 1
"to"
#  获取全部字符串
192.168.120.128:6379> GETRANGE key1 0 -1
"tom1"



192.168.120.128:6379> set key2 xiaomo
OK
192.168.120.128:6379> get key2
"xiaomo"
# SETRANGE 替换  语法 格式  SETRANGE key [第几个字符] [替换内容]
192.168.120.128:6379> SETRANGE key2 1 a
(integer) 6
192.168.120.128:6379> get key2
"xaaomo"


# setex key [过期时间] value 
192.168.120.128:6379> SETEX key3 10 hello
OK
192.168.120.128:6379> ttl key3
(integer) 4看
# setnx  key value   TRUE = 1 False=0
# 如果这个key 存在则返回0 如果这个key不存在返回1 
192.168.120.128:6379> SETNX key3  'redis'
(integer) 1
192.168.120.128:6379> keys * 
1) "key2"
2) "key1"
3) "key3"
192.168.120.128:6379> SETNX key3 're'
(integer) 0


# mset 设置多个 key 一个key对应一个value
192.168.120.128:6379> mset k1 v1 k2 v2 k3 v3
OK
# mget 查询多个key  
192.168.120.128:6379> MGET k1 k2 k3
1) "v1"
2) "v2"
3) "v3"

# MSETNX 如果这个key不存在就创建, 注意这是一个原子操作,要么都成功 要么都失败。
192.168.120.128:6379> MSETNX  k1 v1 k5 v5
(integer) 0


192.168.120.128:6379> mset user:1:name tom user:1:age 10
OK
192.168.120.128:6379> mget user:1:name user:1:age
1) "tom"
2) "10"


# 如果不存在值,返回nil
192.168.120.128:6379> GETSET db redis
(nil)
192.168.120.128:6379> get db
"redis"
# 如果存在新的值,返回原来的值,并设置新的值
192.168.120.128:6379> getset db mongodb
"redis"
192.168.120.128:6379> get db
"mongodb"


# 一般应用场景 STRING : 来设置统计数

 

posted @ 2020-08-28 17:15  Handsome、Snake  阅读(212)  评论(0编辑  收藏  举报