redis关于hash类型存储关系型数据 商品展示(redis缓存) redis之路(三)

15 篇文章 0 订阅
		对于redis来说key必须是Stringl类型的,他们的value类似hashMap
		hash叫散列类型,它提供了字段和字段值的映射。
		**redis hash存储比关系数据库的好处?**
		两者都可以存放对象,对于关系型数据库来说,存储数据比较严格,有事务控制,安全性高。
		但是关系型数据库在并发压力下性能很低,所以使用redis hash类型可以在一定程序上替代关系型数据库,因为redis单机并发量支持10w+

常见命令:

**设值,取值**
127.0.0.1:6380> hset user:1 username '张三'
(integer) 1
127.0.0.1:6380> hset user:1 password 123456
(integer) 1
127.0.0.1:6380> hmget user:2 username userpass
1) "admin"
2) "123456"
127.0.0.1:6380> 

HEXISTS 判断是否存在该字段

127.0.0.1:6380> HEXISTS user:2 username
(integer) 1

HSETNX 字段存在返回,不存在则设值

127.0.0.1:6380> HSETNX user:2 usernames 'lisi'
(integer) 1

**增加数字HINCRBY **

127.0.0.1:6380> HSETNX user:2 age 23
(integer) 1
127.0.0.1:6380> HINCRBY user:2 age 2
(integer) 25

删除一列

127.0.0.1:6380> HDEL user:1 username
(integer) 1

只获取字段名或字段值

127.0.0.1:6380> HKEYS user:1
1) "password"
127.0.0.1:6380> HKEYS user:2
1) "username"
2) "userpass"
3) "usernames"
4) "age"

假设数据库有1K个商品记录,如何使用redis缓存,使用hash缓存

// 假设数据库有1K个商品记录,如何使用redis缓存,使用hash缓存
		// key命名Goods:商品Id
		List<Goods> list = new ArrayList();
		/**
		 * 假数据
		 */
		Goods goods1 = new Goods();
		goods1.setId(1);
		goods1.setName("iphonex");

		Goods goods2 = new Goods();
		goods2.setId(2);
		goods2.setName("iphonexsmax");
		list.add(goods1);
		list.add(goods2);

		for (Goods goods : list) {
			String key = "goods:";
			key = key + goods.getId();
			Map<String, String> value = new HashMap();
			// 可以通过反射来写
			Class clazz = Goods.class;
			Field[] arrays = clazz.getDeclaredFields();
			for (Field field : arrays) {
				// 取属性名
				String fieldName = field.getName();
				// 获取get方法名
				String getter = "get" + fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1);
				// 得到get方法对象
				Method get = clazz.getMethod(getter);
				// 通过属性的get方法取到当前goods对象的属性值
				String fieldValue = get.invoke(goods) + "";
				value.put(fieldName, fieldValue);

			}

			jedis.hmset(key, value);

		}
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值